Skip to content

Chunking Quality Inspector

Run five splitters over your own text and see the line, column and surrounding characters of every cut, plus what each one broke.

Chunks, and how many were cut badly
2 chunks · 1 bad cuts

1 land inside a word, 0 inside a sentence. Median chunk is 800 characters (≈200 tokens at your ratio).

Source length
893 characters
Characters emitted across all chunks
993 (1.11× the source — the excess is overlap)
Shortest / median / longest chunk
193 / 800 / 800
Mean chunk
497 characters
Estimated tokens per chunk at the median
≈200
#chars≈tokensstarts atflags
18002001:1mid-word
21934825:48open code fence, very short

Line:column is where each chunk starts in the source above.

  • errorchunk 1 ends at line 30, column 62the cut lands in the middle of a word

    Expected: a boundary at a whitespace character at least — a half word embeds as noise and matches nothing

    l embeds, and it still retrieves. It simply⏎answers
  • errorchunk 2contains an odd number of ``` markers, so a code block is split across this boundary

    Expected: code fences kept whole — half a function retrieves as prose and the model reads it as prose

What this checked: this runs the splitter you chose over the text you pasted and reports the exact character offset, line and column of every boundary. It checks each cut for: landing inside a word, landing inside a sentence, splitting a fenced code block, splitting a markdown table, and orphaning a heading from its section. Character counts are exact. Token counts are not measured — no tokenizer runs here, so they are your characters-per-token ratio applied to the character count, and they will be wrong for code, CJK text and heavy punctuation. This does not embed anything, does not evaluate retrieval quality, and cannot tell you whether a semantically clean chunk is a useful one.
What this assumes: splitting is done on literal text: separators are matched as plain strings and there is deliberately no visitor-supplied pattern, because a pattern with a nested quantifier would hang this tab on a long paste. The sentence splitter is a simple one — a full stop, question mark or exclamation mark followed by whitespace — so it will split "e.g." and "Dr.", which is exactly what most production splitters do too. Packed modes never cut a unit in half, so a paragraph longer than your limit produces an over-size chunk rather than a bad cut.

Everything on this page runs in your browser. Nothing you paste is uploaded, logged, or put in the URL — only the settings above the input are, so a configured tool can be linked to.

Why the boundary matters more than the size

Most chunking advice is about the number — 512, 800, 1000 — and the number matters far less than where the cuts land. A chunk that ends halfway through a sentence still embeds cleanly, still gets stored, still gets retrieved, and answers a slightly different question than the one its text appears to answer. Nothing downstream reports this. It shows up much later as a retriever that returns plausible chunks and a model that gives subtly wrong answers, which is the hardest failure in RAG to diagnose because every component looks healthy.

The overlap arithmetic people forget

Overlap is not free. At size 800 and overlap 400, every character is stored and embedded twice: your index doubles, your embedding bill doubles, and near-duplicate chunks start competing with each other for the same slots in the top-k. The ratio in the breakdown above is the honest number to check — if it says 1.6×, you are paying 60% more for the same corpus, and the question is whether the boundaries you rescued were worth it.

The structural flags are usually the highest-value finding here. A split code fence turns a function into two fragments that read as prose. An orphaned heading produces a chunk that consists of the words "## Refund policy" and nothing else — it will retrieve beautifully for refund questions and contain no answer. Both are invisible in any chunk-size histogram, and both are one line of splitter configuration to fix.

Chunking Quality Inspector · Multigrid