Mapping old and new URLs
Moving a site to a new platform, reorganising categories or changing WordPress permalinks means deciding where every old address should point. That decision usually happens in a long spreadsheet, row by row, and mistakes are easy to miss. The redirect mapper speeds this up: it compares two lists, proposes likely matches and highlights the rows that need a human decision.
It is built for SEO specialists, developers and agency teams. The output is a proposal: you still confirm which new page really succeeds an old one.
How to use
- In two-list mode, paste old URLs on the left and new URLs on the right, one per line. Absolute
https://URLs and root-relative paths starting with/both work. - If you already have a table, switch to CSV mode and paste
old_url,new_url,statusrows or upload a UTF-8 file. The header row is optional. - When new addresses are paths, enter the new site address, for example
https://www.example.com/, as the base URL. - Choose the status code (301 or 302) and the query policy, then press “Suggest mapping”.
- Resolve rows marked “needs choice” with the drop-down, or pick “no redirect”. Then copy or download the .htaccess CSV or the mapping CSV.
Matching and confidence rules
- Exact match: identical RFC 3986-normalised encoded paths are marked “exact” (confidence 100);
%2F,%3Fand%23stay distinct from/,?and#. Paths are case-sensitive; hosts are not. - A same-site address whose path and query did not change is marked “unchanged” and is not exported.
- Heuristic suggestion: path segments are lower-cased with Turkish rules, Turkish letters such as
ç, ğ, ı, ö, ş, üare simplified for comparison, and extensions likehtmlorphpare ignored. Half of the score comes from all path tokens, half from the last segment. - Suffix variants with a shared start of at least four letters, such as
tasarimandtasarimi, count as partial matches. Suggestions top out at 99 and candidates below 45 are hidden. - If two candidates are within 8 points, or if two paths differ only by letter case, Turkish letters or punctuation, the row is never auto-confirmed and waits for your choice.
- This normalisation is used for comparison only. Exported URLs keep exactly the form you entered.
Conflicts, chains and loops
Confirmed mappings are checked as a redirect graph. The same old URL pointing to two different targets is a conflict; an address pointing to itself is a self-redirect; /a going to /b while /b goes back to /a is a loop. Any of these stops the export, because it would produce broken or endless redirects on the server.
A chain such as /a → /b → /c is a warning rather than an error. The tool does not rewrite targets on its own; point the first row straight at the final address to shorten it. The same path on a different domain counts as a migration, not a loop.
CSV and .htaccess workflow
There are two export formats. The mapping CSV stores approved rows with old_url,new_url,status,confidence,kind, which suits team review. The .htaccess CSV uses the source,target,status,query format expected by the bulk mode of this site’s .htaccess redirect generator: the source is a percent-encoded root-relative path and the target an absolute HTTP or HTTPS URL.
Large lists are not passed to the other tool through a link fragment. Copy or download the CSV, open the .htaccess redirect generator, switch to CSV mode and paste it. Cells are protected so they never start with =, +, - or @, which keeps spreadsheet apps from running formulas.
Example and interpretation
| Old | Suggested new | Result |
|---|---|---|
/hizmetler/web-tasarim.html | /hizmetler/web-tasarimi/ | Suggestion, confidence 92 |
/blog/2024/istanbul-ışık-festivali | /blog/istanbul-isik-festivali/ | Suggestion, confidence 94 |
/Icerik | /icerik/ | Needs choice: spelling-only difference |
/urunler/led-panel | Two LED panel pages | Needs choice: close candidates |
/eski-kampanya | — | Unmatched |
The first two rows are suggested because their tokens overlap strongly, even though ışık became isik in the new slug. /Icerik and /icerik/ carry the same word, but servers can treat paths case-sensitively, so they are not merged automatically. The LED panel row has two near-identical candidates and you choose the right product. The unmatched campaign URL needs a new target, or a conscious decision that the page is gone.
Limits and privacy
- Up to 5,000 rows per list and 2 MiB of input in total. Larger input is never truncated; you get an explicit error.
- Similarity only looks at URL text. It knows nothing about page content, meaning or traffic, and it does not promise semantic equivalence or prevent traffic loss.
- No requests are sent to your URLs, so targets are not checked for being live, returning 200 or being indexable.
- Queries and fragments on old URLs are not carried into the .htaccess source; a warning appears when an old URL has a query.
- Everything runs in your browser. Lists are not sent to a server, and only small inputs fit into a share link.
Frequently asked questions
Can I trust the suggested mapping?
Suggestions are based on URL text similarity. Even with a high confidence score, check that the pages really correspond before you deploy the redirects.
Why are /Icerik and /icerik not matched automatically?
Many servers treat paths case-sensitively, so these may be two different pages. The tool shows the candidate but leaves the decision to you.
Should I use 301 or 302?
Use 301 for permanent moves. 302 is for temporary situations such as short maintenance windows or seasonal campaign pages.
How do I apply the result on my server?
Paste the .htaccess CSV into the CSV mode of the .htaccess redirect generator, place the generated rules above the WordPress block and test on a staging copy first.
Are my lists stored anywhere?
No. Mapping is computed in your browser; the lists are not sent to a server and are not written to browser storage.