Skip to main content
Back to Blog

Changelog: exact-size PDFs, new formats, Chrome extension, download pages and upload limits

Written by Ankur Prajapati

Published 2026-05-25

LinkedIn profile
Advertisement

This page lists user-visible changes to the site, newest first. Each entry says what changed and how to check it yourself. Everything described here runs in your browser; generated files are not uploaded to us.

2026-09-27

PDFs are rebuilt to stay valid at the exact size you ask for

The PDF generator now produces a structurally valid document at the exact byte count requested, instead of a file that is the right size but that some readers need to repair. This matters most for boundary tests, where the "exactly at the limit" file must be accepted by the server and survive whatever post-processing (thumbnails, page counts, text extraction) runs afterwards.

How to check a file yourself:

wc -c dummy.pdf          # should print exactly the size you requested
qpdf --check dummy.pdf   # should report no structural errors
pdfinfo dummy.pdf        # page count and file size (poppler-utils)

Try it with the 5 MB PDF preset or an explicit size such as /generator?ext=pdf&bytes=5242881.

DOCX, ZIP and WebP output

Three formats that upload forms commonly accept are now available. Like PDF, JPG, PNG, GIF and WAV, they remain valid when padded: a padded DOCX opens in a word processor, a padded ZIP lists its contents with unzip -l, and a padded WebP decodes as an image. The generator now supports 28 formats in total: TXT, MD, VTT, HTML, PDF, DOCX, SVG, JPG, PNG, GIF, WEBP, MP3, WAV, MP4, WEBM, JS, TS, CSS, SCSS, JSON, CSV, XML, SQL, ZIP, YAML, INI, ENV and TOML.

A reminder about media: MP3, MP4 and WebM files are minimal shells. They carry the right signature and MIME type for size and type validation tests, but they do not play. Use real media for transcoding or playback tests.

Chrome extension

The Chrome extension has a popup generator (pick a format and size, get a file) and can put a generated file straight into the upload box of the page you are on. That removes the download, then open file picker, then find file loop when you are testing an upload form by hand. It uses the same in-browser generation as the website. Install it free from the Chrome Web Store, or read more on the extension page.

Ready-made test file pages under /download

For the most common size and format combinations, there are now direct pages: /download is the index, each format has a hub such as /download/pdf, and each combination has its own page following the pattern /download/<size>-<format>, for example /download/5mb-pdf, /download/25mb-mp4 or /download/100kb-json. Sizes run from 100 KB to 100 MB (100kb, 500kb, 1mb, 2mb, 5mb, 10mb, 20mb, 25mb, 50mb, 100mb) across PDF, JPG, PNG, MP4, MP3, DOCX, ZIP, CSV, TXT and JSON.

Use these when you want a standard size quickly. When you need an exact byte count (one byte over a limit, for example), use the generator instead.

Upload limits reference

/upload-limits collects more than 40 upload and request-size limits for common services and frameworks in one table, each checked against its source. Typical uses: finding out why a file is rejected before your own code runs (a proxy or framework default is often lower than the product limit), and picking realistic sizes for boundary tests. Pair it with the file size calculator when a limit is quoted in MB and you need to know whether that means 1,000,000 or 1,048,576 bytes per MB.

Faster pages

Pages load faster, especially on mobile connections. The generator's behaviour is unchanged: files are still built in your browser, on the main thread, up to 512 MiB per file.

2026-05-25

MIME and magic-byte sniffer

/tools/magic-byte-sniffer reads the first bytes of a local file (or pasted hex) and tells you what the signature says the file is. It runs in your tab with no upload. It is useful for checking a test file before you upload it, and for working out what a user's "broken" file really is. /tools/mime-lookup gives the usual MIME type for an extension.

Scenario playbooks

/scenarios pairs longer QA walkthroughs with generator links that fix the type and size, such as ?preset=pdf-upload-5mb or ?ext=json&bytes=750000. Good starting points are the 5 MB PDF boundary test and extension versus sniffed MIME.

Shareable generator links

Generator settings can be expressed in the URL, so a test plan can contain a link instead of an attachment. Everyone who opens /generator?ext=csv&bytes=520000 gets a CSV of exactly 520,000 bytes. See the shareable presets playbook for ways to organise these for a team.

Starter ZIP bundle

A small bundle (a tiny JSON file, a CSV and a checklist text file) can be downloaded from the generator as a ZIP. It is a quick fixture set for onboarding documents and first upload tests.

Using mismatch probes responsibly

Several of these tools make it easy to create files whose extension and content disagree. Only upload those to systems you own or are authorised to test, and pair each test with server-side type detection (for example libmagic via python-magic, Apache Tika, or your own signature table) and logging, so you can see which layer made each decision.

Advertisement