Back to Tools

Legacy Tool

This tool requires the old Universal Analytics (pre-GA4) data format. It may still work if you have historical UA exports, but is not compatible with GA4.

Resolution Screenshot Tool

Use cases

QA testing at real visitor resolutions Documenting responsive layout issues Verifying above-the-fold content Creating resolution-specific screenshots for reporting

Uses Pyppeteer (async Chromium) to capture screenshots at resolutions from GA Browser & OS reports.

Parses resolution strings (e.g., 1920x1080), sets viewport dimensions, and captures PNG screenshots.

Prints the rendered dimensions and device pixel ratio after each capture (no comparison against the requested viewport is performed).

Streamlit App

Platform

Browser-based (no installation required)

Input

GA Browser & OS CSV

Target URL

Output

Screenshots at each resolution (PNG)

Launch App View Source

Features

  • Pyppeteer async headless Chromium (downloads ~100MB Chromium on first run)
  • GA Browser & OS CSV parsing (6-row header skip)
  • Viewport-only capture (above the fold) with networkidle0 wait and 30s timeout
  • Reports rendered dimensions and device pixel ratio (script version)
  • 10 built-in default resolutions plus custom sizes (app version)
  • Individual PNG downloads or all screenshots as a ZIP (app version)

How to use

  1. 1 App: enter the target URL and upload a GA CSV, or use the default resolutions
  2. 2 App: add custom resolutions if needed and click Take Screenshots
  3. 3 App: download PNGs individually or as a ZIP
  4. 4 Script: place a CSV matching *Browser & OS*.csv beside the script and edit the url variable
  5. 5 Script: run it to capture the first 10 resolutions as {width}x{height}.png

Frequently asked questions

Why does my CSV upload lose its header or first rows?
The reader skips the first 6 rows of the file because a Google Analytics Browser & OS export starts with a 6 line comment block before the header. If you upload a hand-built CSV without that preamble, the header and first rows are silently discarded. Either keep the raw GA export intact or pad your own file with 6 throwaway lines.
Are the captured resolutions really my most popular ones?
Not guaranteed in the Streamlit app: after parsing, resolutions are deduplicated through a Python set, which does not preserve order, before the top slice is taken. The local script version takes the first 10 rows of the export, which are the top resolutions only if GA's default sessions sort is intact. If exact ranking matters, trim the CSV to just the rows you want before uploading.
Does it capture the full page or just above the fold?
Viewport only: the app screenshots with fullPage disabled, sized exactly to the requested width and height, after waiting for network idle with a 30 second timeout. That makes it a genuine above-the-fold check at each resolution rather than a full-page render.
Do I need GA data at all?
No. The app ships with 10 built-in popular resolutions (1920x1080 down to mobile sizes like 375x667) and you can add custom resolutions between 320 and 3840 wide and 200 and 2160 high. The GA upload just replaces the defaults with your real visitor resolutions.
What should I know before the first run?
Pyppeteer downloads its own Chromium build (roughly 100MB) on first use, so the first capture is slow. The code also notes that the hosted Streamlit Cloud version may fail due to browser limitations there; running locally is the reliable option. The local script has the target URL hardcoded in the source, so edit the url variable before running.

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