What we have done
- Every link works without JavaScript. Navigation is real anchors. The slide-out menu is a checkbox and a label, not a script — it opens, closes and locks the page with scripting disabled.
- The quote form submits without JavaScript. It posts natively to a server endpoint, which validates and redirects to a page listing anything that needs correcting. With scripting on, the same validation runs inline.
- Keyboard operable throughout. A visible focus ring, a skip link to the main content, and Escape closes the menu and the quote sheet.
- Motion respects your preference.
prefers-reduced-motiondisables the marquee, the drifting hero, the scroll reveals and the pulse on the quote button. - Contrast. Body text on both the light and dark surfaces exceeds 4.5:1. Large display type exceeds 3:1.
- Semantic structure. One
h1per page, ordered headings, real tables with header cells and captions, and lists marked up as lists. - Form fields are properly labelled, with hints and errors associated through
aria-describedbyand errors announced to assistive technology. - No text in images. Every illustration on the site is drawn geometry with a text alternative or marked decorative — nothing important is trapped in a picture.
- Zoom and reflow. Content reflows to 320px and supports 200% zoom without horizontal scrolling; wide tables scroll inside their own container.
Known limitations
We would rather name these than let you find them.
- The impact calculator and stamp decoder require JavaScript. Both are supplementary tools, and the reference tables on the same pages carry the underlying information without them.
- The slide-out menu relies on modern CSS (
:has()) for the scroll lock. In older browsers it opens and closes correctly but the page behind it can still scroll. - Some specification tables are wide by nature. They scroll horizontally inside their container rather than reflowing, because breaking a specification across rows makes it harder to read, not easier.
How to report a problem
Email hello@palletsupplyusa.com with the page address, what you were trying to do, and what happened instead. Tell us what you are using — browser, screen reader, magnification — if you can, because it usually makes the problem reproducible in minutes rather than hours.
We aim to acknowledge within two working days and to respond substantively within five. If a fix will take longer than that, we will tell you when to expect it.
Assessment approach
This statement is based on our own evaluation using automated testing, manual keyboard walkthroughs, screen reader spot checks and testing with JavaScript disabled. It has not been assessed by a third party. We review it when the site changes materially and at least annually.
Criterion by criterion
How we meet the ones that matter most
| WCAG 2.2 criterion | Level | How this site meets it |
|---|---|---|
| 1.1.1 Non-text Content | A | Every illustration is inline SVG marked decorative or given a text alternative. No text is trapped in an image. |
| 1.3.1 Info and Relationships | A | Semantic headings, real tables with header cells and captions, lists marked up as lists, form labels associated with controls. |
| 1.4.3 Contrast (Minimum) | AA | Body text exceeds 4.5:1 on both the bone and cocoa surfaces; large display type exceeds 3:1. |
| 1.4.10 Reflow | AA | Content reflows to 320px. Wide specification tables scroll inside their own container rather than forcing the page sideways. |
| 1.4.12 Text Spacing | AA | Layout uses relative units throughout and tolerates increased line, word and letter spacing without loss of content. |
| 2.1.1 Keyboard | A | Menu, quote sheet, accordions, forms and both tools operate from the keyboard. Native elements throughout. |
| 2.1.2 No Keyboard Trap | A | The drawer and quote sheet close on Escape and return focus to the control that opened them. |
| 2.4.1 Bypass Blocks | A | A skip link to main content is the first focusable element on every page. |
| 2.4.7 Focus Visible | AA | A 2px focus ring with offset, colour-adjusted for dark and light surfaces. |
| 2.5.8 Target Size (Minimum) | AA | Interactive targets meet the 24px minimum; primary controls are considerably larger. |
| 3.2.2 On Input | A | No control changes context on input. Validation runs on blur and on submit, never mid-keystroke. |
| 3.3.1 Error Identification | A | Errors are described in text, associated with their field, and summarised in a live region. |
| 3.3.2 Labels or Instructions | A | Every field has a visible label plus a hint where the format is not obvious. |
| 3.3.3 Error Suggestion | AA | Messages say what to do — “ZIP 30318 is in Georgia, not Texas”, not “invalid input”. |
| 4.1.3 Status Messages | AA | Submission state and validation summaries are announced without moving focus unexpectedly. |
Tested with
What we actually checked it on
| Environment | What we checked |
|---|---|
| Keyboard only, no pointer | Full traversal of every page type, both sheets, both tools and the form |
| JavaScript disabled | Navigation, submenus, quote sheet, scroll lock and a complete form submission |
| VoiceOver on macOS Safari | Heading structure, landmark navigation, form labelling and error announcement |
| NVDA on Windows Firefox | Same, plus table header association on the specification tables |
| 200% browser zoom | Reflow, target size and horizontal scroll behaviour |
| 320px viewport | Reflow, table containment and menu usability |
| prefers-reduced-motion | Marquee, hero drift, scroll reveals and the pulse on the quote button all disabled |
| Forced colours / high contrast | Focus visibility and control boundaries |
What we are working on
- The two tools. The impact calculator and stamp decoder require JavaScript. The reference tables on the same pages carry the underlying information without it, and we are looking at a server-rendered fallback for both.
- Older-browser scroll lock. The sheets rely on CSS
:has()to freeze the page behind them. In browsers without it, they open and close correctly but the page behind can still scroll. - Third-party assessment. Nothing here has been audited by anyone outside the company. We would rather say that than imply otherwise.
Why the design choices help
Some of what makes this site accessible was not an accessibility decision. There are no raster images anywhere, so nothing depends on alt text for a photograph nobody wrote alt text for. There is no phone line, so no part of the service depends on a voice call. The form posts natively, so it works in any browser that can render a form at all.
The one deliberate trade-off is density. Specification tables are wide because breaking a specification across rows makes it harder to read, not easier — so they scroll inside their own container instead of reflowing. If that causes you a problem, tell us; we will provide the same data in whatever format works.
At a glance
Conformance summary
| Area | Status |
|---|---|
| Keyboard operation | Full |
| Works without JavaScript | Yes, except two tools |
| Skip link | Present |
| Focus visible | Yes |
| Reduced motion | Respected |
| Text contrast | Exceeds 4.5:1 |
| Reflow to 320px | Yes |
| Form error announcement | Yes |
| Third-party audit | Not yet |

