ScreenshotNeo

BlogHow-to

How to Capture a Website Screenshot at a Fixed Viewport for Legal Records

Capture a repeatable browser view for legal records, document the conditions, preserve the original, and understand what a screenshot can and cannot establish.

By the ScreenshotNeo team4 October 202610 min read

To capture a repeatable website screenshot for a legal record, set a specific browser viewport and display scale, keep them stable, and record the URL, access steps, browser and version, operating system, date and time with time zone, and operator. Capture the relevant visible content with enough page context to identify it. Preserve the untouched original and related files, and record any later processing separately.

A screenshot documents what appeared to the operator in a browser at capture time. By itself, it does not prove who authored the page, when the page first appeared, that the entire page was captured, or that a court will admit it. Requirements depend on the court, jurisdiction, proceeding, facts, and counsel’s instructions.

1. Decide what the screenshot needs to show

Before opening the browser, write down the proposition the image is meant to support. For example, “I observed this text at this URL on this date” is narrower and easier to explain than claiming that a named person published the text at a particular earlier date.

  • Identify the exact content and surrounding context that matter.
  • Decide whether the issue concerns the current observed page, content below the fold, page structure or links, or a previous version.
  • Note whether authentication, a particular account, a geographic location, a consent choice, or an interaction changes what the page displays.
  • Check with counsel about the relevant court’s rules, orders, and preservation instructions if the capture may be used in litigation.

Federal Rule of Evidence 901(a) requires evidence sufficient to support a finding that an item is what its proponent claims it is. Rule 901(b) gives nonexclusive examples, including testimony from a witness with knowledge and evidence describing an accurate process or system. A visible URL and timestamp alone do not settle authenticity. The DOJ’s older manual explains that webpage printouts are not self-authenticating; treat it as background and check current authority. Federal Rule of Evidence 901 · DOJ manual on searching and seizing computers.

2. Set and record a fixed viewport

A viewport is the browser’s visible page area, measured in CSS pixels. Record its width and height, along with the browser zoom or operating-system display scale that affects the appearance. Keep those settings unchanged for the capture sequence. Browser viewport dimensions are not necessarily the same as the physical screen’s pixel dimensions.

  1. Use a browser and computer you can identify later. Record the browser name and full version, operating system and version, and display scaling or browser zoom.
  2. Set a stable window size and viewport. If using browser developer tools or automation, record the viewport width and height in CSS pixels and the device scale factor if configured.
  3. Navigate to the target page using the steps that matter. Record the final URL shown after redirects, and whether you were signed in or used a particular account.
  4. Wait until the relevant page state appears. Record any wait, click, scroll, consent choice, or other interaction that affects the result.
  5. Capture the page title, relevant material, and enough surrounding context to make the page identifiable. Avoid cropping the preserved original.
  6. Record capture time with time zone and the operator’s name while the details are fresh.

If the content extends below the visible viewport, take additional screenshots in order. Keep the same viewport and explain the scrolling or interactions between captures. A fixed viewport creates a repeatable screen view; it does not make a single image a complete record of the page.

3. Capture with a browser you can describe

For a manual capture, use the same browser state and window dimensions you recorded. Save the resulting screenshot in its original format without markup, resizing, compression, or redaction. Note the filename and capture sequence, such as “01-top”, “02-middle”, and “03-bottom”.

For a repeatable automated capture, the following Python example uses Playwright. Install its Python package and browser once, then save this as capture.py. Set the URL and viewport to match the record you need. The script saves a full-resolution viewport image, not a full-page capture.

from datetime import datetime, timezone
from pathlib import Path
from playwright.sync_api import sync_playwright

URL = "https://example.com/"
WIDTH = 1365
HEIGHT = 768

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(
        viewport={"width": WIDTH, "height": HEIGHT},
        device_scale_factor=1,
        color_scheme="light",
    )
    page = context.new_page()
    response = page.goto(URL, wait_until="networkidle", timeout=60_000)
    page.screenshot(path="original-01.png", full_page=False)

    print({
        "requested_url": URL,
        "final_url": page.url,
        "http_status": response.status if response else None,
        "title": page.title(),
        "viewport_css_pixels": f"{WIDTH}x{HEIGHT}",
        "device_scale_factor": 1,
        "captured_at_utc": datetime.now(timezone.utc).isoformat(),
    })
    context.close()
    browser.close()

Install and run with python -m pip install playwright, python -m playwright install chromium, and python capture.py. Preserve the script, its configuration, and the environment details if repeatability matters. The printed UTC time is the script’s reported capture time; record the machine’s time source and any limitations relevant to the matter. Automated output is still a record of the browser rendering process, not independent proof of page authorship or publication history.

Make the capture process reproducible

For repeat captures, keep the browser build, viewport, device scale factor, color scheme, locale, and wait condition fixed. In a controlled environment, pin the Playwright and browser versions and retain the dependency lockfile. Record changes rather than silently changing these settings. If page content varies with time, account, location, or personalization, describe the state used.

The example waits for network idle, which can time out on pages with long-running network connections. If that happens, use a documented alternative such as waiting for a relevant selector or a fixed delay, then record that choice. Do not treat one wait strategy as universally correct: the page may load content after network activity settles, or never become idle.

4. Choose the right capture scope

Capture What it helps preserve Limit to consider
Fixed viewport screenshot The visible browser presentation under documented settings Content outside the viewport is omitted
Several viewport screenshots Visible portions in a sequence, including below-the-fold material Scrolling and interactions need to be documented; gaps or overlaps may occur
Full-page image A longer rendered page in one image It is not the same as what was visible at one viewport position and may alter lazy-loaded page behavior
Web archive or broader web record Potentially more page structure or historical context, depending on the method Coverage and functionality vary; a snapshot alone does not establish authenticity or admissibility

If links, document structure, or web functionality need to remain available, an image may not be enough. NARA discusses web snapshots and capture approaches that retain hypertext functionality for certain permanent records; its guidance was last reviewed in 2017, so check updated agency instructions when applicable. NARA describes a snapshot as capturing a website as it existed at a particular point in time, a records-management term rather than proof that an image independently establishes historical state. NARA guidance on managing web records.

5. Preserve the original and document handling

  • Keep the untouched screenshot in the format in which it was generated or received.
  • Retain related files: capture notes, scripts, configuration, browser and system details, and any associated page records.
  • Record when and how files were created, copied, transferred, converted, compressed, annotated, printed, or redacted, and who handled them.
  • Make a separate working copy for annotations, crops, or redactions. Clearly label it and retain the original unchanged.
  • Store copies in a controlled location and follow counsel’s or the organization’s retention and access instructions.
  • Consider calculating a cryptographic hash when the capture is created and after transfers to help detect whether the file changed. Keep the hash and the process used with the file.

A hash can help compare file integrity; it does not prove where the file came from, who created the page, or whether the page’s claims are true. NISTIR 8387 discusses preservation considerations for digital evidence and digital objects. NISTIR 8387.

Authentication asks whether the offered item is what its proponent claims. The narrower and more accurate the claim, the more clearly the capture process and witness knowledge can address it. Federal Rule of Evidence 902(13) and (14) describe certification routes for certain records generated by an electronic process or system and copied data, subject to stated conditions including notice requirements. They do not set universal screenshot dimensions or mandate a particular capture application. Review the current rules for the actual court and matter, and coordinate with counsel about declarations, certifications, and filing requirements. Federal Rule of Evidence 902.

This is general U.S.-oriented information, not legal advice or a determination of admissibility. Rules differ by jurisdiction, and a court’s orders and the facts matter.

7. Troubleshooting

Problem Likely cause What to do
Screenshot dimensions do not match the recorded viewport Device scale factor, browser chrome, zoom, or a different window size affected the output Record CSS viewport dimensions separately from image pixel dimensions. Fix zoom and scale, then capture again under documented settings.
Important content is missing It is below the fold, lazy-loaded, hidden behind a consent prompt, or shown only after interaction Capture additional views and document each scroll or interaction. Do not silently dismiss or alter page elements when their presence matters.
Page screenshot is blank or incomplete Navigation failed, content had not rendered, or a script/resource was blocked Check the final URL and response status, wait for a relevant element, and document the wait condition. Preserve failure details if the failed state itself is relevant.
Automated script times out waiting for network idle Long polling, analytics, or persistent connections prevent an idle state Wait for a relevant selector or a stated delay instead. Record the exact condition and avoid claiming the page was fully loaded unless that is established.
Repeated captures differ Dynamic content, personalization, time-sensitive data, browser updates, or changing viewport settings Keep environment and account state stable, note unavoidable differences, and preserve each capture with its own timestamp and settings.
Someone questions whether the image was edited Processing history or source file is unclear Retain the untouched original, document all processing, provide a working copy separately, and preserve transfer records or hashes where used.
A timestamp or URL is being treated as proof of authorship The capture is being asked to establish more than what the operator observed State the limited observation accurately and seek other evidence or testimony for authorship and historical publication claims.

8. Performance, reliability, and cost

A manual viewport screenshot is usually the simplest path for a small number of records. Automation helps repeat the same dimensions and sequence, but adds browser setup, version management, wait-condition choices, and a need to retain the script and environment details. Full-page capture can take longer and may trigger lazy loading or page changes; use it only when the broader image serves the record’s purpose.

Reliability depends on stable inputs and a clear record of what changed. Pages can personalize content, update while you capture, or behave differently behind authentication. A successful image save only shows that an image was produced; it does not confirm legal sufficiency. Costs may include engineering and storage time for a self-managed browser workflow. For consequential records, factor in counsel or qualified forensic support as directed by the matter.

9. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. A single request can return a screenshot or PDF. For a fixed viewport, specify the viewport parameters supported by the API and retain the request details alongside the output; the API output does not replace documenting the capture context or checking legal requirements. See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
  • Cookie and consent banners, newsletter popups, and chat widgets are removed before the shot; each step can be turned off. For legal documentation, decide whether those elements are relevant and configure capture accordingly.
  • Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are never billed; response headers report the page verdict and billing status.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents and MCP clients.
  • The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 screenshots; every feature is on every plan.

For a legal record, preserve the request parameters, output, and related notes, and assess whether automated banner removal is appropriate to the proposition being documented. Sign up for 1,000 free screenshots a month with no card.

10. Capture checklist

  • Purpose and exact proposition documented
  • Final URL, access steps, and account state recorded
  • Browser/version, operating system, viewport, and display scale recorded
  • Capture time with time zone and operator recorded
  • Relevant context included; below-the-fold content captured separately if needed
  • Untouched original and related files preserved
  • Processing and handling documented; edits made only to a copy
  • Court-specific instructions checked with counsel

Frequently asked questions

Does a fixed viewport make a screenshot admissible?

No. It helps make the visible browser view repeatable and explainable. Authentication, relevance, and other requirements depend on the governing rules and facts.

Does a screenshot prove when a webpage was first published?

No. It records what appeared during the capture as described by the operator. Establishing an earlier publication time may require other evidence.

Use it when the broader rendered page is relevant, and describe how it was produced. If the issue is what a person saw at a particular screen position, preserve viewport captures too.

Can I crop or redact the image before preserving it?

Keep the untouched original first. Make and label a separate working copy for any crop, annotation, or redaction, and document the change.

Is a hash enough to authenticate the screenshot?

No. A hash can help show that a file matches a previously hashed file. It does not establish origin, authorship, truth, or admissibility.