Skip to content

Radiocarbon dating (C14)

The radiocarbon plugin records C14 determinations (BP + error) and automatically calibrates them into calendar-year ranges using the IntCal20 curve. Unlike the other system plugins, it does not add columns to your table — it creates a dedicated child table so a single record can carry more than one dating.

When to use it

Use this plugin when your records need scientific radiocarbon dates, for example stratigraphic units, burials, or organic finds:

  • One or more determinations per record — a context can have several C14 samples
  • Automatic calibration — enter the lab's BP value and error, the calendar range is computed for you, server-side, every time the record is saved
  • Searchable calibrated ranges — filter or sort records by calibrated date range in the advanced search, exactly like any other field

Enabling the plugin for a table

Go to Config → Tables, select the table, scroll to the System plugins section and click Activate next to Radiocarbon dating. This creates a new plugin table named {table}_radiocarbon (e.g. us_radiocarbon) with the fields listed below. No further configuration is required — the section appears immediately in RecordView.

There is currently no "deactivate but keep data" toggle for this plugin (unlike fuzzy-date or osteology, which only add columns). To remove it, delete the {table}_radiocarbon table from Config → Tables like any other plugin table — this permanently deletes all datings.

The radiocarbon panel

Once enabled, a Radiocarbon dating section appears in RecordView with the usual add/remove-row plugin table editor.

FieldTypeNotes
Lab codetexte.g. Beta-123456
BPintegeruncalibrated radiocarbon age
Error (± years)integer1σ measurement uncertainty
Material datedtexte.g. charcoal, bone collagen
δ13C (‰)decimaloptional, isotopic fractionation correction
Calibration curvetextfixed to intcal20 for now
Cal BP (68.2%) from / tointegerread-only, computed on save
Cal BP (95.4%) from / tointegerread-only, computed on save
Noteslong textfree text

The four calibrated fields cannot be edited directly — whatever the record's BP and Error values are, the calendar range is (re)computed automatically the next time the record is saved, and any value a client might send for those fields is discarded server-side.

Calibration method and its limits

Calibration convolves the sample's Gaussian likelihood (BP, error) against the IntCal20 Northern Hemisphere curve (Reimer et al. 2020), then finds the narrowest range covering 68.2% and 95.4% of the resulting probability mass.

Not a substitute for OxCal

This is the same core method every calibration tool uses, but with a deliberate simplification: the four calibrated fields store a single bounding range (min/max calBP), not the true — and sometimes disjoint — Highest Posterior Density (HPD) regions that a tool like OxCal reports. On wiggly stretches of the curve (e.g. the Hallstatt plateau) the stored range can include a low-probability "gap" as if it were part of the result. This is intentional: it keeps the calibrated range as two plain, indexable, searchable integer columns instead of a JSON blob of disjoint sub-ranges. For publication-grade precision, cross-check with OxCal or a dedicated calibration tool.

Data model

Activating the plugin creates a genuine plugin table (like a user-defined one, e.g. is_plugin/plugin_of), not a JSON column:

ColumnTypeContent
idINTEGERprimary key
id_linkINTEGERstandard plugin-table linkage to the parent record
lab_codeVARCHAR
bpINTEGER
bp_errorINTEGER
materialVARCHAR
d13cFLOATnullable
curveVARCHARintcal20
cal_1s_from / cal_1s_toINTEGER1σ bounding range, computed
cal_2s_from / cal_2s_toINTEGER2σ bounding range, computed
notesTEXT

Because this is a real child table (not JSON), the calibrated fields are automatically exposed as filterable fields in the advanced search UI, and joined via the standard plugin-table subquery mechanism — no extra configuration needed.