Share of Voice Calculator
Calculate competitive share of voice from Ahrefs traffic data with Excel chart export.
#about
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.
Streamlit app
- Platform
- Browser-based (no installation required)
- Input
- Ahrefs Traffic by Domain CSV from Keywords ExplorerBad domains CSV for exclusion (optional)
- Output
- Excel with share of voice rankings
- Category
- Reporting
Use cases
- Competitive market analysis by traffic share
- Tracking visibility changes over time
- Identifying market leaders in a keyword set
- Client reporting on organic market share
#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
- Export Traffic by Domain from Ahrefs Keywords Explorer
- Upload CSV (auto-detects UTF-8 or Latin-1 encoding)
- Select domain column if auto-detection fails
- Upload optional bad domains list to exclude
- Set Top N domains (5-50) and download Excel
#faq
- 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.
/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.