Visualise Internal Links
Create interactive Plotly treemaps of link distribution from crawl or GSC data.
#about
Generates interactive treemap visualisation using Plotly showing link distribution across site sections.
Accepts Screaming Frog crawls, Ahrefs backlinks, or GSC internal/external link reports.
Auto-normalizes column names across sources, removes non-indexable pages when Indexability column present, and groups URLs by their first path segment, giving a one-level folder hierarchy rather than a full path tree.
Jupyter notebookUses crawl data
- Platform
- Jupyter Notebook (requires Python environment)
- Input
- CSV from: Screaming Frog crawl, Ahrefs backlinks, or GSC links reportRequires Address/URL column and Inlinks column
- Output
- Interactive HTML treemap showing link distribution across site sections, weighted by link count.
- Category
- Internal Linking
Use cases
- Visualising which site sections receive most links
- Finding under-linked areas at a glance
- Comparing link distribution across templates
- Presenting internal linking audits
#features
- Plotly interactive treemap visualisation
- Multiple data sources: Screaming Frog, Ahrefs, GSC
- Auto column renaming for known source formats
- Filters non-indexable pages when Indexability column present
- Groups URLs by first path segment (one-level hierarchy)
- Downloadable HTML output (internal_links_treemap.html)
#how-to-use
- Export link data from Screaming Frog, Ahrefs, or GSC
- Upload CSV to the notebook
- Run cells to generate treemap
- Download internal_links_treemap.html
#faq
- Which exact column names does my export need?
- The notebook normalises a fixed set of names: Screaming Frog's Address and Inlinks work as is; 'Target page' plus 'Internal links' (GSC internal links report) and 'Target Page' plus 'Linking Sites' (GSC external links report) are renamed automatically, as are Ahrefs' 'Link URL' and 'Referring Domains'. Exports in another language, or reports with any other headings, must be renamed to Address and Inlinks manually before upload or the treemap cell fails.
- How deep is the treemap hierarchy?
- One level. The URL path is split on slashes and the treemap groups by the first path segment only, with individual URLs nested directly underneath. A site whose URLs mostly live at the root (no subfolders) will collapse into a single group, and deeper folder structures beyond the first segment are not shown as separate levels.
- What do the box sizes mean when I upload an Ahrefs backlinks report?
- Box size is always taken from the column mapped to Inlinks. For a Screaming Frog crawl that is internal inlinks, for the GSC reports it is internal links or linking sites, but for Ahrefs it is Referring Domains, so the same visual represents a different metric depending on the source file.
- Are non-indexable pages always removed?
- Only if the upload contains an Indexability column, which in practice means a Screaming Frog export. Ahrefs and GSC files have no such column, so the filter is skipped silently and every URL in the file is plotted.
/contact
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.