Upload your whole corpus — Word and PDF — tag each file, then build a code tree of main codes and sub-codes. Every passage matching a code becomes an excerpt you can read, count, and export, across all files at once.
| Document | Tag | Code | Sub-code | Location | Excerpt |
|---|
Qualitative coding means reading a body of documents and marking every passage that speaks to each of your themes, then counting what came up where. Done by hand across thirty interview transcripts it takes days. This tool applies your code tree across the whole corpus at once and returns every coded excerpt, with the counts per code per document.
You build main codes, each with optional sub-codes, and give each one the keywords that signal it. A main code can be applied in its own right, and each sub-code is matched separately, so you can work at whichever level of granularity the analysis needs. A code with no keywords falls back to matching its own name.
Codes are applied by keyword search, not by a language model. Nothing is sent to an external service, there is no API key, and no interpretation happens that you did not specify. The same corpus and the same code tree produce the same excerpts every time, which is what makes the result auditable — you can state exactly why any passage was coded the way it was.
Single-word keywords match on word boundaries, so cost does not fire on costume. Multi-word keywords match as phrases. Matching ignores case. End a keyword with * to also match its endings — interview* catches interviewing, interviewed and interviewer too. Start a keyword with - to exclude it: a passage that also contains an excluded term is not coded, even if another keyword for that code matched — useful when a term's common phrase means something else, like cost excluding -cost of living.
As you type a code's keywords, the page checks them against your corpus and
shows how many passages match, a few seconds after you stop typing — the
same search an extract runs, just for that one code, so you find out before
committing to a keyword rather than after a full run. Save this
codebook writes your code tree out as a small JSON file so you can reuse
it on a different corpus or the command line; Load a codebook
reads one back in. It's the same file codebook_cli.py --codes takes.
Compare with a codebook… loads a second codebook file and runs it over the same corpus, then reports, code by code, how often the two agree on which passage it applies to — percent agreement and Cohen's kappa, the measures researchers use for inter-rater reliability. There's no second rater here, since matching is deterministic, but the question is the same one IRR answers: if a colleague had written different keywords for what you both call "Workload", how much would that actually change what gets coded? Only codes both files define by the same name can be compared; anything else is listed as belonging to just one of the two.
Documents are split into passage-sized segments before matching — text blocks for PDFs, paragraphs and table cells for Word files — so what comes back reads as a quotable unit rather than half a sentence or an entire page. Long passages are split on sentence boundaries rather than mid-word. PDF excerpts cite a page number; Word excerpts cite a paragraph or table position, since Word files carry no page numbers until they are rendered.
Every count on this page comes from the same excerpts the Code Frequency table lists, grouped a different way rather than computed a second time. The Trend column on Code Frequency is a sparkline of each code's count across your documents, in the order you gave them — useful when filenames sort meaningfully, like dated interviews. Codes by Tag cross-tabs the same counts against the tags you gave each document, and only appears once there is more than one tag to compare. Codes That Share a Passage lists which codes fired on the very same excerpt, most-shared first — a sign the themes overlap in what people actually said, not just that the corpus is large.
Only if they already contain a text layer. A scan that is purely images has nothing to search, and will need OCR first — the tool tells you rather than returning an empty result.
Six hours, deliberately longer than the other tools, because tagging files and building a code tree is real work that can outlast a single sitting. Only the extracted text is stored, never the original PDFs or Word files.
Up to 25 files per upload, each up to 10 MB, and up to 5,000 excerpts per run. Hitting the excerpt cap usually means a keyword is too broad.
The code tree lives in the page while you work. Export to Excel before you finish for the day so you have a record of both the codes and the excerpts.
Three extractions a month without an account, each across your whole corpus.