About
How this board is built, tested and sourced
What the page is made of, how each effect is checked, what it cannot do, what it keeps and where, and everything it cites.
How it is made
What the page is made of
Pedals is nineteen static pages on labs.llc and 5 scripts of its own, with the pitch detector it shares with the labs.llc Tuner. There is nothing behind the board doing anything: no account, no database, no upload. The audio runs in your browser’s Web Audio engine. 9 of the 15 effects are graphs of the engine’s standard nodes, 5 are AudioWorklet processors, which the Web Audio specification describes as scripts that “process audio on the rendering thread”, and the wah is a standard filter moved by one. Each effect’s page draws its graph.
A pedal that is switched off is not in the graph. The chain is rebuilt every time a switch is pressed or a pedal is moved: everything is unplugged, and then the pedals that are on are connected in order. That is what “true bypass” means on this board, and it is why a bypassed pedal can be shown to change nothing at all.
The 3 test signals are computed when you first press Start. The plucked string and the chord use the Karplus–Strong method: a delay line one period long is filled with noise and fed back through a two-sample average, so that the top of the sound dies first, as a string’s does. The sustained note is twelve harmonics added together.
How the effects were tested
The browser can run an audio graph without playing it, as fast as it can compute, and hand back the samples: an OfflineAudioContext. Each effect was built in one, by the same code the page uses, given a signal whose properties are known (a single impulse, a pure tone, seeded noise) and rendered. The output was then measured, and the measurement compared with what the effect’s page says it does. The sentences on each effect’s page are the test’s own output, with the numbers it found.
The first test for every pedal is bypass: switched off, the rendered output must equal the input in every sample, exactly, not approximately.
| Effect | Switched off: output against input | Checks | As described |
|---|---|---|---|
| Tuner | identical | 5 | 5 |
| Noise gate | identical | 4 | 4 |
| Octave | identical | 5 | 5 |
| Wah | identical | 4 | 4 |
| Compressor | identical | 5 | 5 |
| Overdrive | identical | 5 | 5 |
| Fuzz | identical | 4 | 4 |
| EQ | identical | 4 | 4 |
| Phaser | identical | 5 | 5 |
| Chorus | identical | 4 | 4 |
| Flanger | identical | 5 | 5 |
| Tremolo | identical | 4 | 4 |
| Delay | identical | 5 | 5 |
| Reverb | identical | 5 | 5 |
| Cabinet | identical | 4 | 4 |
The test signals, and the whole board switched off
- Plucked string: 8 notes, 4.0 s, read back by the detector as E2 G2 A2 B2 D3 B2 A2 G2, the worst of them 0.19 cents from pitch. Peak −3.4 dBFS. [as described]
- Chord: six strings, 4.8 s, peak −6.8 dBFS. [as described]
- Sustained note: synthesized at 110 Hz and read back by the detector as 110.01 Hz, 2.00 s and a whole number of cycles long, peak −11.2 dBFS. [as described]
- With all 15 pedals on the board and all of them switched off, the output was identical to the input in every sample. [as described]
Rendered in an OfflineAudioContext at 48,000 Hz in Chrome/154.0.8037.58, 2026-09-29 01:07 UTC. The test is work the page’s builder ran, not something your browser does when you open this page.
The tests were first run on 2026-09-28 16:45 UTC for pedals.llc, in Chrome/154.0.8037.58. When the board moved to labs.llc they were run again on the files labs.llc serves, in Chrome/154.0.8037.58: 73 of 73 sentences came out word for word the same.
What the tests do not cover: how anything sounds, which is for ears; how the effects behave in browsers other than the one named above; and the latency of any real device. No real instrument, audio interface or phone was tested.
Latency
Latency, honestly
Every digital audio system delays sound, and a browser more than most. Between the string and your ear the signal passes through the input device and its driver, the browser’s capture pipeline, the audio graph, the browser’s output buffer, and the output device. The board shows the figures the browser gives:
- Processing latency is the audio context’s
baseLatency, which the Web Audio specification defines as the processing latency incurred by the context passing audio from its destination to the audio subsystem. It says this does not include latency incurred by the audio graph itself. - Output latency is
outputLatency: the specification’s words are “the estimation in seconds of audio output latency”, the interval between the browser handing a buffer to the system and the first sample in it reaching the output device. It depends on the device, and it can change while you play. Wireless headphones add a great deal. - Input latency is the
latencysetting of the input track, where the browser reports one. The Media Capture and Streams specification calls it a target: “the actual latency may show some variation from that”.
The total shown is the sum of whichever of those the browser reported. It is a floor, not a measurement: it leaves out anything the browser does not know about, and the small delay that oversampling adds inside the overdrive and the fuzz. Where a browser does not report a figure the page says so and does not guess. For the lowest latency use a wired audio interface and wired headphones.
Privacy
What stays in your browser
- Your sound. Audio from your input goes into the audio graph and out to your output device. It is not recorded, stored or sent anywhere. The only request the board’s own scripts make is for their AudioWorklet module, a file on labs.llc.
- The input permission. The input is requested only when you press Start with “Your instrument” chosen, and released when you press Stop or leave the page. It is not released when you switch to another tab, because people play along to something in another tab; the browser’s own recording indicator stays lit for as long as the page holds the input.
- Your board and presets. The board as you left it, your saved presets and the output volume are kept in this browser’s local storage under the names
pd_board,pd_presetsandpd_volume. The paper or dark edition you chose is kept underlabs_edition, in local storage and in a cookie (and underlabs.mode, an older name labs.llc keeps in step). Clearing the site’s data in your browser removes them all. Presets saved on pedals.llc before the board moved here stay in that site’s storage: a browser keeps each site’s storage apart, so this page cannot read them. A share link made there still opens here. - Share links. The board is encoded in the fragment of the link, the part after the #. RFC 9110 says fragment identifiers “are not sent in requests”, and warns that they are visible to scripts on the page. So when a link is opened, this page reads the board and then removes the fragment from the address bar. The analytics tag in the head of the page starts before that, as the next point says.
- Analytics. labs.llc counts visits with Google Analytics, the one script on the page that talks to anyone else, and only from labs.llc itself. It is told which page was opened and in which edition, and, as on every labs.llc tool, that one of the page’s controls was first used, that the page was in use for thirty seconds, and how quickly the page drew and answered: its LCP, CLS and INP timings, sent as one
web_vitalevent with the tag and the id or class of the element involved (never its text), the edition, the path and a random id for that one page load. The board’s own scripts tell it nothing: not the audio, not the knob settings, not the presets. Because the tag starts before the board reads a share link, the address it is given for the page view can still carry the #b= code. That code is the board’s settings (which pedals, in what order, where the knobs are) and nothing about you. - The rest of the page. The menus, the search and the Lab Assistant around the board are labs.llc’s own and load the site’s own files; the assistant sends what you type into it to labs.llc only when you ask it something. The site’s legal page has the privacy note for all of labs.llc.
What this board does not claim
No pedal here is a model of a product, is named after one, or is said to sound like one. The cabinet is a filter curve and an approximation. The reverb is generated noise, not a room. The octave pedal follows one note and its page shows what it does with two.
Method
Sources
- Web Audio API 1.1, W3C Working Draft, 22 September 2026. Read 2026-09-28. Used for: DelayNode in a cycle is clamped to at least one render quantum; the default render quantum is 128 frames; WaveShaperNode oversampling up-samples, applies the curve and down-samples, and adds latency; baseLatency and outputLatency, as defined; the biquad low-pass and high-pass read Q in decibels; AudioWorklet runs scripts on the rendering thread and needs a secure context.
- Media Capture and Streams, W3C Candidate Recommendation Draft, 9 October 2025. Read 2026-09-28. Used for: The echoCancellation, autoGainControl and noiseSuppression constraints and what each is for; the latency setting of a track.
- RFC 9110, HTTP Semantics (June 2022), sections 4.2.5, 7.1 and 17.11. Read 2026-09-28. Used for: The target URI of a request excludes the fragment; fragment identifiers are not sent in requests.
- RFC 3986, Uniform Resource Identifier: Generic Syntax (January 2005), section 3.5. Read 2026-09-28. Used for: Which characters a fragment may contain.
- GuitarPlayer, “Signal Chains: A Guide to Guitar Pedal Order”, by Alex Lynham, last updated 25 March 2026. Read 2026-09-28. Used for: The conventional positions of compression, overdrive, fuzz, delay, reverb, modulation, wah and pitch-tracking pedals, and that the conventions are not rules.
- Wikibooks, “Guitar/Effects Pedals” (revision 4531572). Read 2026-09-28. Used for: That an EQ before a distortion changes how the distortion is voiced and an EQ after it shapes the result.
For the general definition of each effect, the English Wikipedia article was read on 2026-09-28 (CC BY-SA); the revision is in brackets: Electronic tuner (1376805919), Noise gate (1352653007), Octave effect (1320143420), Wah-wah pedal (1371661178), Dynamic range compression (1377121547), Distortion (music) (1351139491), Audio equalization (1372652059), Phaser (effect) (1375676541), Chorus (audio effect) (1376334499), Flanging (1352810920), Tremolo (electronic effect) (1052496149), Delay (audio effect) (1368297557), Reverb effect (1364839120), Guitar speaker (1323080466), Karplus–Strong string synthesis (1366198826).
The conventions on the signal chain page are the guide’s; the reasons given for this board’s own choices are labs.llc’s. Nothing is fetched from any of these sources when a page is opened: they were read, once, and are cited.
Who makes it
Pedals is a labs.llc property, in the Sound room. It was built as pedals.llc in September 2026 and moved here, page for page, in labs.llc build 546; each pedals.llc address answers with a permanent redirect to its page here. Write to labs@labs.llc. It is free to use.