← DataExact
Tool

Qualitative Coding

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.

01 Upload your files

.pdf or .docx, up to 25 files, 10 MB each. Add a tag to group files (e.g. site, cohort, wave).
Click to choose files or drag them here
No corpus to hand?

02 Build your code tree

Add a main code, then optional sub-codes under it. Keywords are the terms that signal the code — leave blank to match the code name itself. End a keyword with * to also match its endings (interview* catches interviewing); start one with - to exclude it (-jargon).
· ·

03 Extract excerpts

Code Frequency

Excerpts

DocumentTagCodeSub-codeLocationExcerpt

Code a document corpus against your own codebook

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.

A two-level code tree, the way Dedoose works

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.

Matching is deterministic, not AI

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.

How it works

  1. Upload your corpus — up to 25 PDF or .docx files at once.
  2. Tag each document if it helps: by site, year, interviewer, source, whatever you will want to compare across later.
  3. Build your code tree with main codes, sub-codes and the keywords for each.
  4. Extract to see every coded excerpt on screen, or export the whole thing to Excel.

Excerpts are passages, not fragments

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.

Three views on the same excerpts

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.

The Excel export

Common questions

Does it work on scanned PDFs?

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.

How long is my corpus kept?

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.

How many documents can I code at once?

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.

Can I keep working on a codebook over several sessions?

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.

What are the free limits?

Three extractions a month without an account, each across your whole corpus.