Filter builder — build conditions & columns, get a filter=/columns= URL + live SQL
Query string
—
Full URL
Filters
0filter
raw: —
Decoded Decoded:
XML Decoded + XML Escaped:
Conditions (AND-joined)
Columns
0columns
raw: —
Decoded Decoded:
XML Decoded + XML Escaped:
Columns
SQL
Filter → SQL
best-effort
table?
Approximation only — review before running.
How it converts
Strings are single-quoted; contains/startswith/endswith (and * wildcards like Name=*Smith*) → LIKE; between → BETWEEN … AND …. A leading ! negates an operator (:!eq: → <>, :!contains: → NOT …, :!empty → IS NOT NULL); value-less :empty → IS NULL and :falseorempty → (= 0 OR IS NULL); :any: → IN (…). Code/relation fields with all-numeric values get an ID suffix (e.g. TrainingRole → TrainingRoleID) and lists become IN (…); display accessors like .DisplayCode / .Description stay as-is. Nested *Path:contains:(…) sub-filters expand into grouped, path-qualified predicates. Relative dates — Today/now → CAST(GETDATE() AS DATE), and offsets like -365 or -3BM/-3BY → DATEADD(…) (business B offsets are approximated as calendar units). The table is guessed from the URL path.
Decodes the entire input with decodeURIComponent, then a second pass XML-escapes the result (&<>"') — handy for any encoded string, even without a recognized filter/columns parameter.
Waiting for input…
Result
Click the box or the Copy button to copy. Ctrl/⌘+Enter formats.
Waiting for input…
Result
Escape converts < > & " ' to entities. Unescape reverses it (incl. &#nn; numeric).
Compare documents — line diff — paste an old and a new version to see line-by-line text changes (great for reviewing form XML edits). Comparing two tables keyed by a column? Use Tools → Compare data.
Paste both versions, then Compare.
Compare documents — structural (tree) diff — compares two XML documents by element/attribute path, not just line text (added / removed / changed).
Paste both versions, then Compare structure.
XPath query — evaluate an XPath expression against pasted XML (read-only)
Examples:
Paste XML and an expression, then Run XPath.
Waiting for input…
0 / 0
Ln 1 · Col 1 · Pos 1
⊞ Table view
Tip: Ctrl/⌘+F jumps to Find · Enter/Shift+Enter next/prev · Ctrl/⌘+S downloads a backup · Tab/Shift+Tab indent/outdent · Ctrl+D duplicate · Ctrl+L delete line · Ctrl+Shift+↑/↓ move line · Ctrl+G go to line (press ? for the full list). Long lines wrap under the same line number; click a chip in the recap to paint that token in the code. Everything stays in your browser.
XML mode: with this on, a pasted chunk of form config (unclosed opens or unmatched closes at the top/bottom) shows as a valid fragment instead of an error — genuinely misnested tags are still flagged. Turn it off for strict whole-document checking.
SQL mode: Format pretty-prints & upper-cases keywords · Minify collapses to one line · keywords, 'strings', numbers and -- /* */ comments are coloured · Backup saves a .sql file. Recap shows statement types & referenced tables — click a chip to paint it in the code.
JSON mode: Format pretty-prints with 2-space indents · Minify collapses to one line · keys, "strings", numbers and true/false/null are coloured · parse errors are reported with line numbers below · Backup saves a .json file. Recap shows value types & top-level keys — click a key chip to paint it in the code.
HTML mode: tags, attributes, comments, embedded <script> JS and <style> CSS are coloured · validation is void-element aware (<br>, <img>, <input>… aren't flagged as unclosed) · Format re-indents (void elements respected; embedded script/style may be reflowed) · Backup saves an .html file. Recap lists tags, classes & IDs — click a chip to paint it in the code.
CSV mode: every column gets its own colour, the header row is bold, delimiters are dimmed and ragged rows (wrong column count) are flagged in red · a live table grid appears automatically below (or docked to the right on a wide window) whenever the text is tabular — with a sticky header, inferred column types and row numbers; click any cell to jump to it in the text · the delimiter auto-detects (comma / semicolon / tab / pipe) or pick one in the table bar · type in Find to filter the grid to matching rows (hits are highlighted; use Aa/.* and the All columns dropdown to scope) · click a column header to sort (asc / desc / off) · uncheck Header row when the data has no header so the first row is treated as data (shown, sorted & copied) · Copy CSV/Copy MD copy the rows currently shown; Copy 'list' turns the scoped column (or column A) into a single-quoted, comma-separated list for SQL IN( ) (values de-duplicated, blanks skipped) · Format aligns the columns into a neat grid, Minify compacts them · Backup saves a .csv file.
Markdown mode: headings, **bold**, *emphasis*, `inline code`, fenced ``` blocks, list markers, block-quotes and [links](url) are coloured · Format tidies trailing whitespace & collapses extra blank lines · Backup saves a .md file. Recap lists block types & headings — click a heading chip to paint it in the code. Markdown has no “invalid” state, so nothing is flagged.
Compare
Editor A ↔ B
— diff the editor (A) against a second version (B). Line numbers below; use Structural (XML) for a by-node tree diff. Read-only — the editor above is untouched.
Paste B, then Compare lines.
Form
Recap
Referenced domains & relationships
No domain/relationship references detected.
Elements
Structure
Day
Time
Calendar
“Teams” (or any Location) is just a text label — in the opened Outlook event, toggle Teams meeting to add a real join link.
If a button ever opens a blank page instead of a pre-filled event/email, the provider (Outlook/Google) likely changed its link format — it's a quick one-line fix in the tool's link builder.
Inquiry email
Add window
Time
Show times inYour zone · UTC
Split on
Column → list
No items yet
Want it on any page? Drag this bookmarklet to your bookmarks bar — it pops a box, you paste your list, and it shows the same string forms ready to copy.
A · baselineempty
B · compareempty
Column rulesField name → the JSON key · Type validates each cell · Required flags blanks · Allowed = comma-separated whitelist
No links yet
Want it on any page? Drag this bookmarklet to your bookmarks bar — it pops a box, you paste your URLs, and it opens each in a new tab.
Tip: show your browser's bookmarks bar (Ctrl/⌘+Shift+B), then drag a pill onto it. Run a bookmarklet while the target page is open. Everything runs locally in your browser.
🎧 Headphones give the full binaural effect; speakers still work (tones + noise). Keep it quiet, and stop if you feel dizzy or unwell. This is a focus aid, not a medical device.
00:00
Idle
Pick a length above, then press Start. Leave this tab and the bar behind the tabs keeps you posted.
Delivery
Beat volume1%
Noise volume1%
Personalise the sound — optional. A word, phrase or URL seeds a deterministic tweak (carrier, noise blend & colour). The same seed always sounds the same.
Beat
—
Carrier
—
Masking noise
—
Delivery
—
🍅 Pomodoro timer — alternate focus sprints with short breaks, and a longer break after a few rounds. It runs independently of the protocol session above and only one can run at a time. During a Focus interval the selected focus audio plays (if 🔊 Sound is on); breaks are quiet, with a gentle chime at each change.
25:00
IdleRound 1 of 4
Sound layers — optional psychoacoustic textures you can stack over the beat. Everything is synthesised live in your browser; keep levels low because they add up. Toggle any on, adjust its level, then press Start (with 🔊 Sound on).
Extra tones tuned to simple frequency ratios above the carrier — the maths of harmony. Pick which intervals to blend in.
Level4%
A warm fundamental with a natural, decaying overtone series shaped like a vowel — a soft choir/“ah” colour.
Level4%
Adds integer-multiple harmonics (2f, 3f, 4f…) at falling amplitude — richer and warmer than a bare sine. Slide for more/fewer harmonics.
Warmth (harmonics)6
Level4%
A gentle, regular soft beat — a predictable rhythm to pace your focus. Set the tempo in beats per minute.
Tempo60 BPM
Level6%
Soft noise filtered to the ~2–5 kHz speech/birdsong range — an airy, flowing-water/birdsong texture.
Level4%
A single sustained pure tone at a named “healing” frequency. Traditional folklore — not clinically proven.
Level4%
Scenes — save the current sound setup (length/band, delivery, beat & noise levels, seed, and every layer) as a named scene, then recall or share it. Pomodoro timings aren’t included. Scenes live only in this browser.
A share link encodes the settings in the page URL after #focus= — opening it applies the scene. Nothing is uploaded.
Your focus — minutes from completed focus blocks (protocol sessions and Pomodoro focus intervals). Breaks and stopped-early sessions aren’t counted. Local to this browser only.
Today
0 min
This week
0 min
Day streak
0 days
Last 14 days
Nothing here leaves your machine — there’s no account and no sync.
Protocol reference — how each length is tuned
Length
Brainwave target
Carrier
Masking
Objective
10 min
6 Hz Theta
250 Hz
None
Rapid attentional re-orientation between tasks.
15 min
10 Hz Alpha
230 Hz
Pink (low)
Fronto-parietal warm-up for working memory.
30 min
40 Hz Gamma
400 Hz
Pink
Narrow attention for analytical, detail work.
90 min
10 → 14 → 6 Hz
250 Hz
Pink
Ultradian cycle: acclimation → deep peak → cool-down.
? custom
Your chosen band
Auto
Pink
Any length; steady tone in the band you pick.
Sound layers stack extra textures over the beat, all synthesised live:
Consonant intervals — harmonious tones at simple ratios (octave 2:1, fifth 3:2, fourth 4:3, major third 5:4) above the carrier.
Voice-like tone — a vowel/choir-ish fundamental with a decaying overtone series.
Harmonic warmth — adds integer harmonics (2f, 3f, 4f…) for a fuller timbre than a bare sine.
Steady pulse — a gentle, regular soft beat at a tempo you set (BPM).
Airy nature band — noise filtered to ~2–5 kHz for a birdsong / flowing-water feel.
Solfeggio tone — a sustained “healing” frequency. These are traditional folklore, not clinically proven.
Binaural delivery needs stereo headphones; isochronic works on speakers. Layers are additive — keep each level low to avoid clipping.
Keyboard shortcuts & tips
Editor
Ctrl/⌘+F Jump to Find
Find (CSV mode) Filters the Table view to matching rows · click a header to sort
Enter / Shift+Enter Next / previous match
Ctrl/⌘+S Download a backup
Tab / Shift+Tab Indent / outdent line(s)
Format / Minify Re-indent or collapse the XML / SQL