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.

EffectSwitched off: output against inputChecksAs described
Tuneridentical55
Noise gateidentical44
Octaveidentical55
Wahidentical44
Compressoridentical55
Overdriveidentical55
Fuzzidentical44
EQidentical44
Phaseridentical55
Chorusidentical44
Flangeridentical55
Tremoloidentical44
Delayidentical55
Reverbidentical55
Cabinetidentical44

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 latency setting 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_presets and pd_volume. The paper or dark edition you chose is kept under labs_edition, in local storage and in a cookie (and under labs.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_vital event 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

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.