User Guide

Everything you need to know to get started with Koali and make the most of your qualitative analysis.

Getting Started

Privacy first Koali runs entirely in your browser. Your documents, codes, and notes are never uploaded anywhere. There is no backend server, no account system, and no data ever leaves your machine. Everything stays in a local folder you control.

Browser requirements

Koali runs entirely in your web browser. For the best experience, use a Chromium-based browser:

BrowserSupportNotes
Chrome 86+FullRecommended
Edge 86+FullChromium-based
Opera 72+FullChromium-based
FirefoxLimitedNo File System Access API; uses download/upload fallback
SafariLimitedNo File System Access API; uses download/upload fallback
Tip Chrome, Edge, and Opera support the File System Access API, which lets Koali read and write directly to a folder on your computer. Firefox and Safari work but require manual file downloads and uploads instead.

Creating a project

  1. Open Koali in your browser.
  2. On the home screen, enter your display name. This identifies your work in collaborative projects.
  3. Click Create New Project.
  4. Choose a folder on your computer. Koali will store all project data here as plain JSON files.
  5. Give your project a name and optional description.

Opening an existing project

  1. Click Open Existing Project on the home screen.
  2. Select the folder containing a Koali project (the one with a koali.json file).
  3. Koali loads your project, including all sources, codes, notes, and codings.

Recent projects are listed on the home screen for quick access.

Importing Documents

Supported formats

FormatExtensionDetails
PDF.pdfText extracted per page. Scanned/image-only PDFs are not supported.
Word.docxConverted to HTML with formatting preserved.
Plain text.txtDisplayed as-is with whitespace preserved.
WebVTT.vttTranscript with timestamps and speaker labels.
SRT.srtSubtitle format with timestamps and text.
Zoom JSON.jsonZoom meeting transcript with speakers and timestamps.

How to import

  1. Click the Import button in the left panel.
  2. Select one or more files in the file picker. You can select multiple files at once.
  3. Koali automatically detects the file type from the extension and parses accordingly.
  4. Imported documents appear in the source list on the left panel.

Original files are copied into your project's sources/ folder. Parsed content is cached locally in IndexedDB for fast loading on subsequent opens.

Managing sources

Right-click on any source in the list to:

A search bar at the top of the source list lets you filter documents by title.

The Workspace

The workspace is divided into three resizable panels:

Left panel — Sources & Notes

Lists all imported documents and project notes. Click a document to open it in the centre panel. Click a note to open the note editor.

Centre panel — Document Viewer

Displays the currently selected document. For transcripts, content is shown as individual cues with timestamps and speaker labels. For PDFs, pages are rendered with page numbers. Select text by clicking and dragging to begin coding.

A search bar lets you find text within the current document. Matches are highlighted and scrolled into view.

Right panel — Codes

Shows your codebook as a hierarchical tree. Each code has a colour dot and a count of coded segments. When text is selected in the document, a selection context area appears showing the selected text and a quick code search field.

Toolbar

The toolbar at the top shows the project name and navigation tabs: Workspace, Queries, Charts, Themes, and IRR. Your display name and sync status are shown on the right.

Status bar

The bar at the bottom shows counts for sources, codes, coded segments, and themes, plus the current save status.

Resizing panels

Drag the dividers between panels to resize them. The divider highlights in green when you hover over it.

Coding

Creating codes

  1. Click + New Code in the right panel, or press Ctrl+Shift+C.
  2. Enter a code name.
  3. Optionally select a description template to pre-fill the description field with a structured prompt:
    • Inductive — Definition, When to use, When not to use, Example.
    • Deductive — Theoretical basis, Definition, Indicators, Example.
    • In Vivo — Participant quote, Meaning in context, Related concepts.
  4. The new code appears as a root-level item in the code tree.

Organising codes into hierarchies

Applying codes to text

  1. Select text in the document viewer by clicking and dragging.
  2. The selection context panel appears in the right panel showing the selected text.
  3. Apply a code by any of these methods:
    • Click a code in the tree.
    • Press a number key 19 to apply the corresponding root-level code.
    • Press / to focus the quick search, type to filter, use / to navigate, and press Enter to apply. Codes are sorted by usage frequency.

Applied codes appear as coloured highlights on the text. Hover over a highlight to see the code name. Right-click a highlight to see a popover with the code name and a preview of the coded text, with an option to remove the code from that segment.

Editing and deleting codes

Merging codes

  1. Right-click a code and select Merge Into...
  2. Select the target code.
  3. All segments from the source code are reassigned to the target. The source code is removed.

Exporting the codebook

Right-click any code to access export options:

Notes

Note types

TypePurpose
AnalyticResearch findings, insights, and interpretations.
ReflexiveReflections on methodology, bias, and your research process.
ProceduralNotes about coding procedures and guidelines for your team.
TheoreticalTheoretical connections, framework notes, and conceptual ideas.
OtherGeneral notes that don't fit the categories above.

Creating a note

  1. Click + New Note in the left panel, or press Ctrl+Shift+M.
  2. Enter a title, select a type, and optionally link the note to a code or document.
  3. Add comma-separated tags for organisation.
  4. Write your note content using the rich text editor (bold, italic, underline, lists).

Linking notes

Notes can be linked to:

Queries

Building a query

  1. Navigate to the Queries tab.
  2. Select one or more codes from the code list (hold Ctrl or Cmd to select multiple).
  3. Choose an operator:
    • OR — segments coded with any of the selected codes.
    • AND — segments where all selected codes are applied within the same document.
    • NOT — segments with the first code but not also tagged with other selected codes.
  4. Optionally filter to a specific document or leave as "All documents".
  5. Click Run Query.

Query results

Results are shown in a table with columns for document title, code (with colour), speaker (for transcripts), and the first 200 characters of coded text. The total result count is shown at the top.

Saving and exporting

Visualisations

Navigate to the Charts tab to access visualisations.

Code frequency

A bar chart showing the number of coded segments per code, sorted from most to least frequent. Bar colours match code colours.

Code hierarchy

A tree view showing the parent-child relationships in your codebook. Useful for reviewing codebook structure at a glance.

Code × Document heatmap

A matrix with codes as rows and documents as columns. Cell colour intensity indicates how many times a code was applied in each document. Useful for spotting coding patterns across your dataset.

Word frequency

A word cloud generated from coded text segments. Word size reflects frequency. Common stop words are automatically filtered out, and the top 50 words are displayed. Hover over a word to see its exact count.

Use the Scope dropdown to filter words to a specific code, and the Min freq control to set a minimum occurrence threshold.

Theme visualisations

When you have themes defined, three additional chart types appear:

Heatmap drilldown

Click any cell in the Code × Document heatmap to see the coded text segments for that code-document pair displayed below the matrix.

Exporting charts

When a Chart.js chart is displayed (frequency or heatmap), an Export Chart PNG button appears below the chart to download the current visualisation as a PNG image.

Inter-Rater Reliability

Navigate to the IRR tab to calculate agreement between coders. This requires at least two different users to have coded overlapping segments.

Running an IRR calculation

  1. Select Coder 1 and Coder 2 from the dropdown menus.
  2. Optionally select a specific document, or analyse all documents.
  3. Review the results.

Metrics

MetricDescription
Cohen's KappaAgreement adjusted for chance. Ranges from -1 to 1.
Percent AgreementSimple percentage of segments where both coders agree.
Disagreement CountTotal number of coding disagreements.

Interpreting Cohen's Kappa

KappaInterpretation
< 0Poor agreement
0.00 – 0.20Slight agreement
0.21 – 0.40Fair agreement
0.41 – 0.60Moderate agreement
0.61 – 0.80Substantial agreement
0.81+Almost perfect agreement

A per-code breakdown table shows kappa and agreement for each individual code, helping you identify which codes need clearer definitions. The first 50 disagreements can be reviewed in detail and exported to CSV.

Collaboration

How it works

Koali uses folder-based collaboration. Place your project folder in a shared location such as Dropbox, OneDrive, Google Drive, or a network drive. Each team member opens the same folder in Koali.

Setting up collaboration

  1. Create a project and save it to a shared folder.
  2. Each team member opens the same folder in Koali using Open Existing Project.
  3. Each person sets their own display name and colour in Settings (gear icon) so their work is identifiable.

Team members and roles

In Settings, you can add team members by User ID and assign them a role (Editor or Viewer). The Activity Log in Settings shows a timestamped record of recent project actions.

Backups

Click Backup Project (JSON) in Settings to download a full backup of your project data. You can also click Save All Now to force an immediate save of all unsaved changes.

Note Koali works best with asynchronous collaboration. Avoid having multiple people edit the same project folder simultaneously. Take turns, and let your cloud service finish syncing before the next person opens the project.

Conflict detection and resolution

When Koali detects that multiple users have made conflicting changes, a conflict resolution dialog appears. Conflict types include:

Conflicts are shown one at a time. You can resolve them immediately or skip and return later.

Themes

Themes let you group related codes into higher-order patterns, which is a key step in thematic analysis. Navigate to the Themes tab to manage themes.

Creating a theme

  1. Click + New Theme.
  2. Enter a name (e.g. "Systemic Barriers") and optional description.
  3. Choose a colour from the palette.
  4. Select which codes belong to this theme using the checkbox list.
  5. Click Create Theme.

Managing themes

Theme badges

In the Workspace codebook tree, codes that belong to a theme display a small coloured badge with the theme name next to the code, so you can see theme associations at a glance.

Tip Use the theme visualisations in the Charts tab (Theme Frequency, Theme × Document, and Theme Summary) to explore patterns across your themes.

Keyboard Shortcuts

ShortcutAction
Ctrl+SSave all data
Ctrl+ZUndo
Ctrl+Shift+ZRedo
Ctrl+Shift+CCreate a new code
Ctrl+Shift+MCreate a new note
19Apply root-level code 1–9 to selected text
/Focus quick code search (when text is selected)
EscapeClose dialog / cancel
EnterConfirm dialog
Tip On macOS, use Cmd instead of Ctrl for all shortcuts.

Data & Privacy

Your documents never leave your computer Once loaded, Koali runs entirely in your browser and makes no further network requests. There is no backend server processing your data, no cloud uploads, no analytics, and no telemetry of any kind. Every file you import, every code you create, and every note you write stays in a folder on your machine that only you control. Koali works fully offline once the page has loaded.

Where data is stored

All project data lives in the folder you chose when creating the project. Nothing is ever uploaded or transmitted. There are no accounts and no sign-in.

Project file structure

Your project folder contains human-readable JSON files:

File / FolderContents
koali.jsonProject manifest (name, description, metadata).
codebook.jsonAll code definitions and hierarchy.
sources/Imported document files and a source manifest.
coding/Per-document coding data (one file per source).
notes/Individual note files and a note manifest.
queries/Saved query definitions.
themes.jsonTheme definitions and code associations.

Because everything is plain JSON, you can inspect, back up, or version-control your project with any standard tool.

Browser caching

Koali uses IndexedDB to cache parsed document content for faster loading. This data stays in your browser and can be cleared at any time through your browser's settings without affecting your project files.

File System Access API

In supported browsers (Chrome, Edge, Opera), Koali uses the File System Access API to read and write directly to your project folder. You grant permission once per session, and the browser may ask you to re-confirm on subsequent visits.

Troubleshooting

Firefox or Safari: no folder picker

These browsers don't support the File System Access API. Koali falls back to a download/upload workflow. You can still use all features, but saving and loading requires manual file operations rather than direct folder access.

Documents not loading

Sync conflicts on shared folders

Permission prompts

Chrome and Edge may ask you to re-grant folder access each time you open Koali. This is a browser security feature. Click "Allow" or "Edit files" when prompted.

Clearing the cache

If you experience stale data or loading issues, clear the IndexedDB storage for Koali in your browser's developer tools (Application → Storage → IndexedDB). Your project files on disk are not affected.