Skip to content
此頁面尚未提供您所選語言的版本,當前顯示英文版本。

Linguistic Annotation and Language Documentation Tools Compared

FLEx, ELAN, and other free linguistic annotation tools compared on platforms, file formats, and support for several annotators checking the same data.

FieldWorks Language Explorer (FLEx), ELAN, Praat, and Toolbox are the standard programs for language documentation and phonetic labeling, and all four cost nothing to use. FLEx keeps a lexicon, interlinear texts, and a morphological parser in one project, ELAN aligns tiers of annotation to audio and video, and Praat measures and labels speech. Potato is a free, self-hosted alternative to FLEx and ELAN for the step where several people check the same glosses or tiers in a browser, on a Mac as well as on Windows or Linux, with agreement reported on time-aligned tiers.

Interlinear glossed text (IGT) sets each sentence above a line that splits every word into morphemes and a line that glosses every morpheme, followed by a free translation. The Leipzig Glossing Rules fix the conventions, with - between affixes, = before clitics, and grammatical categories in capitals such as ACC and 3SG. In ELAN and Praat, a tier is one layer of annotation over a recording's timeline, such as words, phones, or tones. A Praat TextGrid has interval tiers, whose labels cover a stretch of time, and point tiers, whose labels mark a single instant. Language documentation records a language and annotates the recordings and texts, usually for deposit in a language archive. Inter-annotator agreement measures how often two or more annotators make the same decision about the same material.

This page covers glossing, morphology, tiered and phonetic labeling, and corpus annotation. Audio Annotation Tools Compared covers transcription, speaker diarization, and listening studies, and Linguistics in Potato lists Potato's linguistics tasks in one place.

Which linguistic annotation tools are worth comparing?

Every tool in the table is free to use. The tools differ in where each tool runs, in the kind of data each tool is built around, and in how several people share the work.

ToolRuns asLicenseSuits
FLExDesktop app, with current releases for WindowsLGPLA lexicon, interlinear texts, and a morphological parser in one project
ToolboxDesktop appFree to useSIL's older text-oriented database for field linguists, for projects that have not moved to FLEx
ELANDesktop app for Windows, macOS, and LinuxGPL-3.0Hierarchical, time-aligned tiers over audio and up to four videos, with an interlinearization mode
PraatDesktop app for macOS, Windows, Linux, Raspberry Pi, and ChromebookGPL-3.0-or-laterAcoustic measurement and TextGrid labeling
LaBB-CATWeb server you installAGPL-3.0A store of recordings and time-aligned transcripts, with forced alignment through HTK
EMU-SDMSR packages, with a labeling app that runs in the browserGPL-2.0-or-later (emuR)Speech databases with hierarchical annotation and the EMU Query Language
INCEpTIONWeb app you hostApache-2.0Corpus annotation with part-of-speech, lemma, and dependency layers, and curation
PotatoPython web server configured in YAML, on your own computer or serverGPL-3.0-or-laterSeveral reviewers checking imported glosses or tiers, with assignment and agreement

SIL's FieldWorks download page lists current releases under Windows and says that FieldWorks for Linux is no longer supported, apart from an older FieldWorks 9.0 package for Flatpak. SIL recommends FieldWorks over Toolbox and keeps Toolbox available for projects that do not want to switch.

Which tool for which task

The table pairs each kind of linguistic work with the tools built for that work.

TaskGood fits
Building a lexicon and parsing words into morphemesFLEx
Glossing texts, one linguist at a timeFLEx, Toolbox, and ELAN's interlinearization mode
Glossing time-aligned recordingsELAN, or FLEx with texts moved from and to ELAN
Pitch, formants, and other acoustic measurementsPraat and EMU-SDMS
Segmenting and labeling phones by one annotatorPraat, ELAN, and EMU-SDMS
Forced alignment of a speech corpusLaBB-CAT
Searching a speech database by annotationEMU-SDMS
Part-of-speech, lemma, and dependency annotation exported as CoNLL-UINCEpTION
Several reviewers checking glosses imported from FLEx or ToolboxPotato
Several annotators correcting the same tiers, with agreement between the annotatorsPotato, and ELAN for pairs of tiers
Reviewing glosses on a Mac or in a phone's browserPotato

FLEx, ELAN, and Praat appear in most rows about analysis, because each program does the analysis itself. Potato appears where the analysis already exists and a team divides the checking among several people.

Free FLEx and ELAN alternatives

FLEx and ELAN cost nothing. A reason to look elsewhere is the computer a team uses, the wish for a browser interface, or work shared among several people. SIL's beta companion app FieldWorks Lite edits a FieldWorks lexicon on Windows, Linux (as an alpha), and Android, with macOS and iOS listed as in progress. SIL's page for FieldWorks Lite lists entries, senses, and example sentences, and no interlinear texts. SIL's web dictionary tool Language Forge syncs with FLEx and is in maintenance mode, and SIL points Language Forge users to FieldWorks Lite. Toolbox is SIL's older text-oriented database for field linguists.

For time-aligned work, Praat and ELAN both run on macOS, Windows, and Linux. LaBB-CAT and EMU-SDMS run in a browser and suit a lab building a speech corpus, with forced alignment in LaBB-CAT and a query language in EMU-SDMS. INCEpTION runs in a browser and is built for text corpora.

A 2026 survey of 98 annotation tools for language documentation found 44 tools that are free and accessible, of which 15 support morpheme segmentation and glossing and 6 combine morphological annotation with remote collaboration at no cost (Yang et al., 2026). Potato is built for a team reviewing glosses. Potato imports FLExText, Toolbox, ELAN, and TextGrid files as a project, assigns each sentence or recording to as many reviewers as the config sets, and exports the corrected work back to the same formats. Reviewers use a browser, and the glossing scheme also works in a phone's browser. Potato has no lexicon, no parser, and no agreement coefficient for glosses, and what Potato does not do lists the other gaps.

Several annotators and agreement by tool

The tools share work among several people in different ways. ELAN, INCEpTION, and Potato compute agreement between annotators.

ToolHow several people share the workAgreement
FLExA shared project through Send/Receive, built for several people adding to one lexicon—
Toolbox——
ELANNo multi-user editing is described; the comparison reads tiers from one file or from several filesModified Cohen's kappa, modified Fleiss' kappa, the Staccato algorithm, and a ratio of overlap to total extent, always on pairs of tiers
Praat——
LaBB-CATOne server with view-only, edit, and admin users—
EMU-SDMSGit and GitLab, with bundles of recordings assigned to annotators—
INCEpTIONOne server with annotator, curator, and manager roles, and a curation view for settling differencesCohen's kappa, Fleiss' kappa, Krippendorff's alpha (nominal and unitizing), and gamma
PotatoOne server; the config assigns each item to a set number of annotators, who work in a browserTiers: mean pairwise agreement on segments matched at a temporal IoU of 0.5, without chance correction. Spans: token-level kappa, span F1, character-level Krippendorff's alpha, and Mathet's gamma. Glosses: none

A dash means we found nothing for the row in the tool's own documentation, checked on 2026-10-28. If a cell is wrong, tell us.

Potato's agreement on tiers compares every pair of annotators on each recording. A segment counts as matched when two annotators' segments overlap by at least half of the two segments' combined length, and a matched pair with different labels gets half credit. The figure appears on the admin dashboard at /admin/iaa, and Agreement over Time describes the measures for time segments. The flextext export writes one file per reviewer, and two reviewers' glosses can be compared from those files. Potato computes no coefficient for glosses itself. For student or crowd annotators, Potato recruits through Prolific or a SONA subject pool and runs a training phase before the real items. Running a Crowdsourced Study covers the setup.

File formats and round trips

The table lists the formats a linguistics project usually moves between and what Potato 2.13.1 reads and writes for each format.

FormatWritten byPotato importPotato export
FLExText (.flextext)FLEx; ELAN imports and exports FLEx filesYesYes, one file per annotator
Toolbox standard formatToolbox; ELAN imports and exports Toolbox filesYesYes, one file per annotator
ELAN .eafELANYes, with the recording beside each fileYes, one file per recording and annotator
Praat TextGridPraat; ELAN imports and exports TextGrids; EMU-SDMS converts TextGrid collectionsYes, interval and point tiers, with the recording beside each fileInterval and point tiers, one file per recording and annotator
CoNLL-UINCEpTION imports and exports CoNLL-U with part of speech, lemma, morphological features, and dependenciesNamed-entity spans onlySpans in the MISC column, with the other annotation columns left empty
Aligned IGT text and gb4e LaTeX—NoYes, as igt.txt and igt.tex

Re-importing a FLExText or Toolbox file that Potato exported gives the same words, segmentations, glosses, translations, and parts of speech. FLEx GUIDs and lexicon links do not come back, because Potato has no lexicon to link to. FLEx punctuation words and the morph types of some morphemes also change, and Linguistic Fieldwork lists each difference.

TextGrid and ELAN files come back with their tiers, point tiers, ELAN parent links, and participants. With several annotators, the textgrid and eaf exports write one file for each recording and annotator, so an adjudicated version is a separate step.

Formats for language archives

Each language archive publishes the formats the archive accepts. PARADISEC's file format page says an ELAN .eaf file can be deposited unchanged, ideally under the same name as the recording the file transcribes, and that FLEx data is exported to XML, one file for the lexicon and one for the texts. Potato's flextext export is the XML file for the texts, and the lexicon file still comes from FLEx. The .eaf export records the recording as /media/<file> on the Potato server. Link the recording again in ELAN before deposit.

Checking forced-aligned phone boundaries in Potato

A forced aligner places word and phone boundaries automatically, and a phonetician then checks each boundary against the waveform. Two annotators on every recording give an agreement figure for the corrected boundaries. Potato imports a folder of TextGrids from the aligner as one project when each TextGrid sits beside a recording of the same name:

bash
potato import -i aligned/ -o phones-project/

The config below has the shape that potato import writes for such a folder. num_annotators_per_item is added by hand, and the phone tier's labels list the phone inventory. When a tier has 30 or fewer distinct values, the importer makes those values the tier's labels. A tier of words with more distinct values gets one label named after the tier, and each word stays as the text of the word's segment.

yaml
annotation_task_name: Phone boundary check
task_dir: .
output_annotation_dir: annotation_output/
data_files:
  - data/recordings.jsonl
item_properties:
  id_key: id
  text_key: text
user_config:
  allow_all_users: true
  users: []
 
# Two phoneticians check every recording for an agreement figure
num_annotators_per_item: 2
 
# The aligner's segments open as each annotator's starting point
pre_annotation:
  enabled: true
  field: predictions
  allow_modification: true
 
annotation_schemes:
  - annotation_type: tiered_annotation
    name: tiers
    description: Move each word and phone boundary onto the waveform, and fix wrong phone labels.
    source_field: audio_url
    media_type: audio
    tiers:
      - name: words
        tier_type: independent
        labels: [words]
      - name: phones
        tier_type: independent
        labels: [m, n, l, r, d, i, ɪ, e, ɛ, æ, ɑ, o, u, ʌ, ə]

Both tiers are independent because a TextGrid has no hierarchy between tiers. Annotators drag boundaries, relabel phones, and add or delete segments, and the admin dashboard reports agreement once two annotators have saved a recording. After any differences are settled, the export writes a TextGrid per recording for Praat:

bash
python -m potato.export --config phones-project/config.yaml --format textgrid --output out/

For glossing instead of phones, potato import -i stories.flextext -o glossing-project/ builds the project, and Linguistics in Potato shows the glossing config.

What Potato does not do for linguistics

  • No lexicon or morphological parser. FLEx keeps the lexicon and parses words against the lexicon. Potato checks that each segmentation lines up with each gloss under the Leipzig rules, and Potato's exports contain no lexicon links.
  • No automatic glossing or forced alignment. Potato's AI support has no prompt for the glossing or tiered schemes. Potato reads the TextGrid or CTM output of a forced aligner, and LaBB-CAT runs forced alignment itself through HTK.
  • Fixed words in the glossing scheme. Reviewers correct the morpheme segmentation and the glosses of each word, and the words of the sentence come from the import.
  • No retyping of segment text on tiers. The tiered scheme moves boundaries and assigns labels from each tier's list, with no box for typing a segment's text.
  • No agreement coefficient on glosses. Agreement on glosses needs a separate comparison of the per-reviewer FLExText files.
  • No syntax in the CoNLL-U export. Dependency arcs drawn with span links stay in Potato's own output, and INCEpTION writes dependencies to CoNLL-U.
  • No acoustic analysis. Acoustic measurements belong in Praat or EMU-SDMS.
  • Needs a server. Someone installs Potato with pip and runs the server, on a laptop for one reviewer or on a shared machine for a team. A Hugging Face Space is a hosted option.

Checked against each project's own documentation in October 2026.

Frequently asked questions

What is the best software for linguistic annotation?

FLEx is built for a lexicon and glossed texts, ELAN for time-aligned tiers over audio and video, Praat for phonetic analysis, and INCEpTION for part-of-speech and dependency annotation of a text corpus. All four are free. LaBB-CAT and EMU-SDMS suit a lab building a speech corpus. Potato suits the step after analysis, when several people review the same glosses or tiers in a browser and the project needs assignment of material to reviewers and agreement on tiers.

Is there a Mac version of FLEx?

No. SIL's FieldWorks download page lists current releases for Windows, says FieldWorks for Linux is no longer supported, and offers no macOS release. SIL's beta lexicon editor FieldWorks Lite lists macOS as in progress and edits lexicons only. On a Mac, ELAN's interlinearization mode handles glossing, and Potato runs a glossing review in the browser from texts exported from FLEx.

Can several people gloss the same texts and compare the glosses?

Yes, in Potato, where num_annotators_per_item sends each sentence to as many reviewers as the config sets and the flextext export writes one file per reviewer. Potato computes no agreement coefficient for glosses, and the reviewers' files are compared outside Potato. FLEx's Send/Receive lets several people add to one shared lexicon, and we found no comparison between people in FLEx's documentation.

Can I move interlinear texts between ELAN and FLEx?

Yes. ELAN imports a .flextext file exported from FLEx and exports FLEx files. Potato reads and writes both FLExText and ELAN .eaf, but Potato does not convert glossed texts into time-aligned tiers or tiers into glossed texts.

Further reading

References

  1. Yang et al. (2026). Annotation Tools for Language Documentation: A Survey of Capabilities, Gaps, and Morphological Support. Proceedings of the Ninth Workshop on the Use of Computational Methods in the Study of Endangered Languages (ComputEL-9). https://aclanthology.org/2026.computel-1.9/
  2. Comrie, Haspelmath, and Bickel. The Leipzig Glossing Rules. Max Planck Institute for Evolutionary Anthropology. https://www.eva.mpg.de/lingua/resources/glossing-rules.php