Re-keying
Typed in again at every handover
The same declaration gets re-entered at each step of the chain. Every re-key is another chance for an error on cargo that cannot afford one.
◆ An open standard · IMDG Code
OpenDGD is a free, open standard for the data behind an IMDG dangerous goods declaration. Create the DGD once, and every system in the chain can read it, check it and print the same form.
"unNumber": "1090", "properShippingName": "ACETONE", "class": ["3"], "packingGroup": "II", "flashpoint": { "valueCelsius": -17 }, "packaging": { "numberOfPackages": 10, "kindOfPackages": "Steel drums" }
UN 1090, ACETONE, Class 3, PG II, (-17°C c.c.), EmS F-E,S-D, 10 x 1A1 Steel drum.
The problem
The IMO Multimodal Dangerous Goods Form is used worldwide. Behind it, the same declaration lives in a dozen incompatible shapes: PDFs, spreadsheets, bespoke EDI, screen scrapes. The goods description, the part that matters most for safety, is free text that every system writes differently.
Re-keying
The same declaration gets re-entered at each step of the chain. Every re-key is another chance for an error on cargo that cannot afford one.
Mismatch
No two systems build box 14 the same way, so one line of goods can read differently on the shipper's copy, the forwarder's and the carrier's.
Opacity
With no structured data underneath, a declaration cannot be validated automatically against the IMDG Code. Someone has to read it by eye.
What OpenDGD is
Three parts, all free and openly licensed. Put structured data in, and the same declaration comes out on any conforming system.
A JSON Schema for a complete IMDG dangerous goods declaration. Every field maps to a numbered box on the IMO form.
opendgd.schema.json →A published algorithm for building box 14, so every implementation produces the same goods description from the same data.
rendering.md →The completed IMO form is the end product. The template and the algorithm are part of the standard, so the same declaration gives the same DOCX and PDF everywhere. A render library and API produce it.
openapi.yaml →How it works
Three steps take a declaration from structured data to a finished document, with the same goods description at every stage.
Enter the parties, transport, container and each dangerous goods line as OpenDGD JSON, or build it in the playground below.
Check that it conforms to the standard for free, then validate against the full IMDG Code with a conforming validator.
Get a completed IMO Multimodal Dangerous Goods Form as DOCX or PDF, the same document on every implementation.
In the repository ◆ v0.1 · draft
Everything in the v0.1 draft: the schema, the rendering algorithm, the form template, the reference API, the render service, and worked examples. Each one checked.
Open and free
The format is free and locks in no one. What you pay for, if anything, is how thoroughly a declaration gets checked.
CC BY 4.0 for the spec, Apache 2.0 for the code. Use it for anything, including commercial products.
The core API (schema, conformance, DOCX, PDF) needs no engine and no account. Host your own or use the reference service.
Proposals and changes happen in the open, with a route to neutral governance as more organisations adopt it.
Implementations
Read or write OpenDGD in any language. These are the implementations we know about, the open reference included.
The open core gives you a well-formed declaration. A full validator takes it the rest of the way, from correctly described to demonstrably compliant.
Look up any entry by UN number and its proper shipping name, hazard class and packing group fill themselves in. No hand-keying PSNs and class numbers, and none of the errors that come with it.
Checks that the inner and outer packaging on each line is permitted for the substance under the IMDG Code, not just plausible.
Validates the whole consignment for segregation and stowage conflicts before it sails, across every line in the unit.
The result is a fully validated DGD, checked against the full IMDG Code.
Get involved
OpenDGD, an open standard. The IMDG Code governs.