AQDA — Augmented Qualitative Data Analysis
A free, open-source tool for qualitative researchers. AI-powered, local-first, privacy-respecting.
AQDA gives you a modern coding interface with local AI assistance — without cloud subscriptions, and with your data staying on your machine (unless you deliberately connect it to an Ollama server elsewhere). It runs as a local web app in your browser.

What Can AQDA Do?
Core Qualitative Coding
- Text coding — Select text (including audio transcripts), apply codes, build your codebook. Click on any coded passage to see applied codes or remove them.
- Hierarchical codes — Organize codes in parent-child trees with colors and descriptions. Drag and drop in the sidebar to re-parent or reorder.
- Text, Word, PDF, image & audio files — Import
.txt,.docx(formatting is dropped), and.pdfdocuments, images (JPG, PNG, GIF, WebP), and audio files (MP3, WAV, M4A) with optional local transcription via Whisper. - Memos — Write analytical notes at the project, document, or code level. Anchor a memo to a specific passage and jump back to it, and reference codes or other memos inline by typing
@— click a reference to jump straight to it. - Document variables & tags — Add metadata (author, date, source) to documents, auto-extracted from filenames on import. Give a document a short tag (e.g.
INT) shown next to it in the sidebar. - Coder identity — Set your name in Settings; each coding records who made it, so collaborators show up as distinct coders in REFI-QDA exports.
- Segments browser — Browse all coded segments across documents. Click to jump to the passage in context, or delete directly from the list.
- Export — REFI-QDA (.qdpx) for MAXQDA/ATLAS.ti/NVivo, including document variables and memos linked to their codes and passages; codebook (.qdc), CSV, JSON.
AI-Powered Augmentation
AQDA uses Ollama to run AI models locally on your computer. No internet connection required, no data shared with anyone. (If you point AQDA at an Ollama server on another machine, the AI features send passages to that machine.)
| Feature | What it does |
|---|---|
| Topic Search | Find passages across your documents that match a topic or theme you describe |
| Code Suggest | Given a code, find uncoded passages that might belong to it (from its definition and coded examples); review each and Apply or Dismiss it |
| Consistency Check | Flag coded segments whose meaning stands out from the other segments of the same code — a prompt to re-read them, not a measure of agreement |
| Hierarchy Suggest | After inductive coding, get suggestions for grouping your codes into parent categories |
| Code Definition Generator | Applied a code many times but haven’t written a definition yet? Generate one from the actual coded passages |
When you click on an AI result, AQDA jumps to the passage in the document and highlights it, so you can immediately see the context and decide whether to code it.
Topic Search and Code Suggest cover text, PDF, and transcribed audio. Use Exclude documents… in the AI panel for material that is not part of your data, such as interview guides, instructions, or documents collecting example quotes for your codebook. Excluded documents are ignored by every AI feature: they are not searched, and their coded segments are not used for suggestions, summaries, definitions, or the consistency check.
Summaries, definitions, and hierarchy suggestions send the model only as many passages as fit into its context window, judged by a deliberately generous estimate of their length. When a code has more, AQDA sends a selection spread over all of its passages and says how many it sent (for example, 34 of 120). Answers that reach AQDA’s length limit are marked as possibly incomplete.
These tools are designed as a methodological interlocutor — they interrogate your coding rather than generate it. The researcher always has the final word.
Two Types of AI Models
AQDA uses two types of models for different purposes:
| Model type | What it does | Used by | Recommended model |
|---|---|---|---|
| Embedding model | Converts text into numerical representations so similar passages can be found | Topic Search, Code Suggest, Consistency Check | nomic-embed-text (fast, 274 MB) |
| LLM (language model) | Reads text and generates structured output (definitions, groupings) | Hierarchy Suggest, Define Code, Summarize Theme | qwen3.5:9b (6 GB) |
You need one of each. They are configured in Settings.
Getting Started
What You Need
- Python 3.10 or newer
- pipx (installs Python apps in isolated environments)
- Chrome, Firefox, or Brave — Safari has known issues with large file imports and downloads
- Ollama (optional, for AI features) — ollama.com/download
Install
Open a terminal and run:
pipx install aqdaAlready installed? Refresh AQDA to the current version with:
pipx reinstall aqdaThen start AQDA:
aqdaThis opens your browser at http://127.0.0.1:8765. To stop, click Close AQDA in the app. Pressing Ctrl+C once in the terminal is the equivalent safe shutdown.
Don’t have Python or pipx?
Mac:
# Install Homebrew (skip if you already have it)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"After Homebrew installs, it prints commands to add it to your PATH — copy and run those lines, then:
brew install python pipx
pipx ensurepathClose and reopen Terminal, then install AQDA.
Windows:
Download Python from python.org — check “Add python.exe to PATH” during installation. Then:
pip install pipx
pipx ensurepathGetting “command not found” after install?
Runpipx ensurepath, then close and reopen your terminal. This adds pipx’s install directory to your PATH.
Setting Up AI Features (Optional)
Open a terminal and pull the models:
ollama pull nomic-embed-text # for similarity search ollama pull qwen3.5:9b # for analysis and definitionsIn AQDA, go to Settings and select your models under “Embedding Model” and “LLM Model”
Open the AI panel (sparkle icon in the left sidebar)
With Ollama running on your machine (the default), all AI processing happens locally and nothing is sent to any server.
Audio Transcription (Optional)
To transcribe audio files locally using Whisper:
pipx inject aqda "aqda[audio]"Then import an audio file (MP3, WAV, M4A) and click the transcribe button.
Auto-Extract Metadata from Filenames (Optional)
If your files follow a naming convention, AQDA can automatically extract variables on import. In Settings → Filename Variable Parsing, set a regex pattern with named groups.
For example, files like 2025-03-10_guardian_from-border-crackdown.txt:
(?P<date>\d{4}-\d{2}-\d{2})_(?P<source>[^_]+)_(?P<title>.+)
This extracts date, source, and title as document variables automatically when you import.
Updating
pipx upgrade aqdaUninstalling
pipx uninstall aqdaThis removes the app but keeps your data in ~/.aqda/. To remove everything, also delete that folder.
Your Data
AQDA saves every change to your project as you work; you never need to save it. Its private working database lives at ~/.aqda/aqda.db; normal users never need to open or move this file.
- Automatic backups — AQDA keeps seven verified daily backups in
~/.aqda/backups/and creates an extra backup before migrations or replacing a project from a collaborator (the ten newest collaboration backups are kept; adjustable in Settings) - Move or archive a project with an
.aqdasnapshot from the Export menu - Deleted projects go to a trash bin and can be restored
- Deleted codes go to Deleted codes at the bottom of the code list and can be restored together with their child codes and coded segments
- Deleting a document is permanent: its coded segments are removed, while memos linked to it are kept, each with a note naming the deleted document (and the passage it was about)
Do not put the live aqda.db in Google Drive, Dropbox, OneDrive, or a network folder. AQDA’s collaboration feature below provides the same convenient shared-folder experience without exposing a live SQLite database to cloud-sync races.
To restore a full backup, close AQDA, keep the current aqda.db as an extra copy, and copy the chosen backup into its place as aqda.db.
Export Formats
| Format | Use case |
|---|---|
.aqda |
Save a standalone copy to send or archive — full AQDA round-trip import/export |
.qdpx |
REFI-QDA text exchange — import into MAXQDA, ATLAS.ti, NVivo |
.qdc |
Codebook XML — share code hierarchies between projects |
.csv |
Coded segments as a table — for further analysis in R, Excel, etc. |
.json |
Analysis data and document variables — for R, Python, or custom processing |
QDPX currently exports text and audio transcripts as text sources. Original audio and image media are not embedded in the QDPX package; use .aqda when an exact AQDA round-trip is needed.
License
MIT
Acknowledgments
Built with substantial assistance from Claude Code (Claude Opus 4.6 by Anthropic). Architecture, backend, frontend, and AI integration were developed collaboratively through human-AI pair programming.
Inspired by QualCoder and the qualitative research community’s need for modern, accessible, AI-augmented analysis tools.