Estimated reading time : 5 min · Published
Decide what belongs on the page
Put the facts needed to decide on the page: what the document is, whom it serves, its date, key points and next action. The file can contain detail, a printable version or a form to keep. If all useful information is trapped in the PDF, readers must download it before knowing whether it answers their question.
Avoid contradictory versions. Assign ownership to both page and file, and decide which is authoritative when facts change. The content operations guide suggests an inventory that includes documents.
- Summary and date visible on page.
- File purpose explicit.
- Authoritative version named.
Make the document readable
Build the file with real headings, logical reading order, identifiable links and sufficient contrast. Tables should remain understandable and informative images need suitable alternatives. A scanned image of text is hard to navigate and use with assistive tools.
Check the file with keyboard navigation, zoom and a common PDF reader. Review document properties such as title, language and author or organisation where relevant. The accessible publishing guide covers the surrounding page.
- Headings and reading order checked.
- Text selectable and legible.
- Document language and title set.
Label the download clearly
The link should say what opens, its format and, if substantial, its size. A descriptive filename also helps when the file is saved: use a meaningful subject and version instead of internal codes. Do not force a new window without a reason.
Google can index PDFs, but that does not remove the need for a useful HTML page around the file. Its official indexable file list confirms PDF support. Check that a public document opens without a login and has the right content type.
- Precise link label.
- Format and notable size stated.
- Public file directly accessible.
Manage versions and old files
Record title, effective date, owner and linking pages for every file. When it changes, update download links and inspect old URLs. An obsolete brochure can remain in search results or emails long after it disappears from navigation.
If an old version must remain accessible, label it clearly and point to the current one. Otherwise, choose a relevant redirect or response rather than leaving misleading information online. Review equivalents in other languages too.
- Version and date identifiable.
- Links and old URLs checked.
- Translations updated together.
Check resuming a large download instead of transferring the whole file again.
Synthetic case: downloading a public document is interrupted. Check range support, the partial response and the reconstructed content. Also test an out-of-bounds range and a changed file version. Range support never removes the need to enforce access rights for a private document.
HTTP byte positions start at zero and both range endpoints are inclusive. Fictional exercise on an unchanged 5 000-byte representation: Range: bytes=0-999 requests 1 000 bytes, not 999. A single-part 206 response describes it with Content-Range: bytes 0-999/5000; the remaining 1000-4999 contains 4 000 bytes. Check the served bytes and representation: with content coding, positions refer to the encoded sequence. This small example explains arithmetic; it measures neither a real document nor this site’s capabilities.
Do not infer resumability from Accept-Ranges alone. A server may ignore Range and return 200 with the full content. For conditional resumption with If-Range, use an allowed validator; a weak ETag is unsuitable. If the version no longer matches, the range is ignored and a normal response may return the full representation: do not append it to the old fragment. In the exercise, a range starting at 5000 is outside the representation; a rejecting server may return 416 with Content-Range: bytes */5000. Check status, version and content before reconstruction.
- The reconstructed file matches the expected version; invalid ranges and forbidden documents are handled correctly.
Scroll the table horizontally to read every column. With a keyboard, focus the table area and use the arrow keys.
| Case | Exercise response | Reading and check |
|---|---|---|
| Supported first range | 206 · bytes 0-999/5000 | 1 000-byte part, inclusive endpoints |
| Supported remainder, same version | 206 · bytes 1000-4999/5000 | 4 000-byte part; reconstructed total 5 000 |
| Range ignored | 200 | Full content; do not append as a mere fragment |
| Rejected out-of-bounds range | 416 · bytes */5000 | Current length 5 000; not evidence of a missing file |
| If-Range no longer matches | 200 | New full representation; do not mix versions |
- MDN HTTP Range Requests
Guide to HTTP requests for part of a resource, partial responses and unsatisfiable ranges.
Connect a page to its file

Proposed case: a button downloads an old PDF while the page shows a recent date. Editing the page did not replace its attachment.
Compare link, file, version and content. Check reading order and useful information in the document; keep remaining limits instead of treating PDF extension as accessibility evidence.
- Identify file and version
- Check the actually served link
- Check document reading
- Structure a long document
Publish accessible website content every day
Reference documents
- MDN HTTP Range Requests · Source consulted
- W3C : PDF reading order · Source consulted
- IETF : RFC 9110, Range · Source consulted
- IETF : RFC 9110, If-Range · Source consulted
- official indexable file list
Content updated on
