Website Migration Tool
Use cases
Matches live URLs to their staging/new equivalents using PolyFuzz with a choice of three matching models: TF-IDF (default), Edit Distance, or RapidFuzz.
Matches on the Address column plus up to three additional columns (H1-1 and Title 1 auto-detected, including multilingual column names).
Selects the best match per URL by highest similarity across columns and reports a median match score, grouped into 10% score brackets so you can focus manual review on weak matches.
Platform
Browser-based (no installation required)
Input
Live site crawl CSV or Excel (e.g. Screaming Frog internal HTML export)
Staging/new site crawl CSV in the same format (encoding auto-detected)
Column selection: Address plus up to 3 matching columns
Output
Excel with a Mapped URLs sheet (best matching URL, matched column, similarity scores with colour scale) and a Median Score Distribution sheet with column chart.
Features
- Three matching models: TF-IDF (default), Edit Distance, RapidFuzz
- CSV input with automatic encoding detection via chardet
- Match on Address plus up to 3 columns (H1-1, Title 1 auto-detected)
- Multilingual column detection (Adresse, Direccion, Indirizzo, Titel 1)
- Best match selected by highest similarity across columns (no minimum cut-off)
- Median match score with 10% bracket distribution chart
- Excel export with 3-colour scale conditional formatting
How to use
- 1 Crawl the live and staging sites with Screaming Frog
- 2 Export both crawls as CSV (only CSV uploads work)
- 3 Upload the live and staging CSVs to the tool
- 4 Select the Address column and up to 3 additional match columns
- 5 Choose the matching model under Advanced Settings
- 6 Click Process Files and review the median match score charts
- 7 Re-run with different column combinations to improve scores
- 8 Download the Excel redirect mapping (migration_mapping_data.xlsx)
Frequently asked questions
- Why does my Excel (.xlsx) upload throw an error?
- The Excel reading branch in the published source calls pd.read_excel_file, a function that does not exist in pandas, so .xlsx and .xls uploads error out. Export your Screaming Frog crawls as CSV instead; the CSV path works and auto-detects the file encoding with chardet.
- Do the column names have to match between the live and staging files?
- Yes. The tool only offers columns that exist in both files (the intersection of the two headers), so if your live crawl has 'Title 1' and your staging export calls it 'Page Title', that column cannot be used. Rename staging columns to match the live file before uploading. Address, URL and several multilingual variants are auto-detected as the address column.
- Why does every URL get a match, even clearly wrong ones?
- There is no minimum similarity cut-off: the default TF-IDF model is initialised with min_similarity=0, so the closest staging candidate is always returned no matter how weak it is. Treat the output as candidates, not final redirects, and use the similarity scores and the 10 percent score-bracket chart to decide which rows need manual review.
- Is matching case sensitive, and does that affect the output?
- All string columns in both files are lowercased before matching, so matching itself is case insensitive. The side effect is that the mapped staging URLs in the output come from the lowercased data. If your new site has case-sensitive URL paths, restore the correct casing before implementing the redirects.
- When I match on multiple columns, how is the winning URL chosen?
- Each selected column (Address plus up to three others, such as H1-1 and Title 1) is matched independently with PolyFuzz. For every live URL, the single column with the highest similarity wins and that staging row's Address becomes the mapped URL; the output records which column won, each column's score, and the median score across all matched columns.
Want me to run this for you?
I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.
Related Tools
Analyse website history using Wayback Machine archives.
Score and sort WooCommerce products by search relevancy.
Remove near-duplicate keywords, keeping the first occurrence in file order.
Extract and visualise named entities using GPT with D3.js circle packing.
Extract MPNs, keyphrases, and calculate optimal bid adjustments from Google Ads data.
Follow redirect chains and see every hop along the way.
Need something built for your business?
This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.
Book a Call