Share of Voice Calculator
Use cases
Calculates Share of Voice as (Domain Traffic / Total Traffic) × 100 with 2 decimal precision.
Automatic domain column detection with UTF-8/Latin-1 encoding fallback.
Filters unwanted domains via regex pattern matching.
Exports multi-sheet Excel workbook via xlsxwriter with embedded column chart.
Platform
Browser-based (no installation required)
Input
Ahrefs Traffic by Domain CSV from Keywords Explorer
Bad domains CSV for exclusion (optional)
Output
Excel with share of voice rankings
Features
- SOV formula: (Domain Traffic / Total Traffic) × 100
- Auto domain column detection with encoding fallback
- Regex-based bad domain filtering
- Top N domains slider (5-50)
- Excel export with embedded column chart (xlsxwriter)
- Summary metrics: domain count, total traffic, leader SOV
How to use
- 1 Export Traffic by Domain from Ahrefs Keywords Explorer
- 2 Upload CSV (auto-detects UTF-8 or Latin-1 encoding)
- 3 Select domain column if auto-detection fails
- 4 Upload optional bad domains list to exclude
- 5 Set Top N domains (5-50) and download Excel
Frequently asked questions
- How are the domain and traffic columns detected?
- The tool scans your headers for a column containing 'url' or 'domain' and a column containing 'traffic' but not 'share' (so it skips Ahrefs' own Traffic share column). If either is not found, a dropdown appears so you can pick manually. The intended source is the Ahrefs Keywords Explorer export from Traffic share > By domains.
- Why do all the percentages change when I move the Top N slider?
- Share of Voice is calculated after trimming to the top N domains, so the denominator is the traffic of only those N rows. Percentages always total 100 percent of the displayed set, not of the whole market or the whole file. Widening the slider dilutes every domain's SOV; keep N fixed when comparing runs over time.
- Does the tool sort domains by traffic itself?
- No. It keeps the first N rows in file order, relying on the Ahrefs export already being sorted by traffic descending. If you re-sort or edit the CSV before uploading, the 'top' domains will simply be whatever happens to be at the top of the file.
- How does the bad domains exclusion list match?
- Entries from the first column of your exclusion CSV are combined into a single case-insensitive substring pattern, so 'ebay.com' also removes 'ebay.com.au' and a short entry like 'cars.com' removes 'usedcars.com' too. Dots are treated as regex wildcards as well. Make each entry as long and specific as possible and check the reported filtered-out count.
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
Detect significant traffic changes in GSC data to identify Google update impacts.
Calculate organic traffic share using ranking positions and CTR curves.
Find pages losing traffic over time by comparing peak vs current performance.
Scrape Google Search Status page for algorithm update history.
Parse ValueSERP batch JSON exports and report your domain's organic appearances.
Preview how your page will appear in Google search results.
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.
Tell Me What You Need