Direct comparison
Codemeta Vs Citation Cff: Key Differences & Comparison | CASRAI
CodeMeta and CITATION.cff are the two principal machine-readable formats for describing research software metadata. CodeMeta uses JSON-LD and the Schema.org vocabulary to provide rich software metadata for registries and repositories; CITATION.cff is a minimal YAML file placed in a repository root that enables GitHub, Zenodo, and other tools to automatically surface correct citation information.
Side-by-side comparison
| Dimension | CodeMeta | CITATION.cff |
|---|---|---|
| File format | JSON-LD (JavaScript Object Notation for Linked Data); filename codemeta.json | YAML (YAML Ain't Markup Language); filename CITATION.cff — the filename is mandatory |
| Where placed | Root directory of the software repository; can also be included in data packages and software registry submissions | Root directory of the repository only; the filename CITATION.cff must be exact and at the root for GitHub and Zenodo to detect it automatically |
| Primary purpose | Rich software metadata crosswalk for registries, repositories, and linked-data ecosystems; covers dependencies, runtime environment, funding, and provenance as well as citation information | Human-readable citation metadata: who created the software, what version to cite, the preferred citation format, and links to papers describing the software |
| Schema basis | Schema.org SoftwareApplication and SoftwareSourceCode types extended with codemeta.jsonld context; supports full linked-data reasoning | Custom schema defined in the CFF specification (cff-version: 1.2.0 current); does not use schema.org but maps to it via converters |
| GitHub recognition | Not natively recognised by GitHub; no automatic UI affordance | Natively recognised since 2021: GitHub renders a "Cite this repository" panel with BibTeX and APA formats generated from CITATION.cff |
| Zenodo integration | Zenodo ingests codemeta.json to populate software record metadata when a GitHub repository is published to Zenodo via the GitHub–Zenodo integration | Zenodo reads CITATION.cff and uses it to populate the citation metadata for the software record; preferred authors, title, and preferred-citation DOI are all imported |
| Adopted by | Software Heritage (indexes codemeta.json), JOSS (Journal of Open Source Software), Zenodo, research data repositories, and software registries including bio.tools | GitHub (native), Zenodo, Zotero (can import CITATION.cff), and increasingly expected by journals including JOSS and scientific Python ecosystem projects |
| Key fields | author, name, version, identifier (DOI/SWHID), softwareVersion, programmingLanguage, runtimePlatform, operatingSystem, license, funding, codeRepository, relatedLink | cff-version, message, authors (with orcid), title, version, doi, date-released, url, repository-code, license, preferred-citation |
Common questions
FAQ
Do I need both CodeMeta and CITATION.cff in my repository?+
Not necessarily, but including both is increasingly common and recommended for maximum interoperability. CITATION.cff is sufficient if your primary goal is enabling GitHub and Zenodo to display correct citation information. CodeMeta is the better choice if you want your software indexed by registries such as Software Heritage or bio.tools, or if you need to document programming language, dependencies, and runtime requirements.
How does CITATION.cff relate to the FORCE11 Software Citation Principles?+
The FORCE11 Software Citation Principles (2016) established that software should be cited on the same principles as any other research output: with a unique, persistent, and machine-actionable identifier, sufficient metadata to identify and locate the software, and a mechanism that gives credit to all contributors. CITATION.cff was designed to implement these principles in a way that is human-writable and immediately actionable by tools.
What persistent identifier should a CITATION.cff or CodeMeta file reference?+
For software deposited on Zenodo, the doi field should reference the Zenodo concept DOI (which always resolves to the latest version) or the version-specific DOI. For software archived in Software Heritage, the identifier field in CodeMeta can reference the SWHID (SoftWare Heritage persistent IDentifier). Best practice, as recommended by the FAIR4RS working group, is to provide both a DOI (for citation) and a SWHID (for long-term archival reference).
Going deeper








