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

  1. 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.
  2. If you already have a table, switch to CSV mode and paste old_url,new_url,status rows or upload a UTF-8 file. The header row is optional.
  3. When new addresses are paths, enter the new site address, for example https://www.example.com/, as the base URL.
  4. Choose the status code (301 or 302) and the query policy, then press “Suggest mapping”.
  5. 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, %3F and %23 stay 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 like html or php are 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 tasarim and tasarimi, 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

Example mapping results
OldSuggested newResult
/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-panelTwo LED panel pagesNeeds 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.

Published: · Updated: