12 / 20 France: NAF 2025 and APE recoding
How is a code read in a French dataset?
Published Updated
Statistical classification only
Statistical classification only. This guide does not determine any reader's code. Confirm a code with INSEE or through the Sirene register that holds the record. This is general information, not advice on any reader's registration.
A code in a French dataset is read with three pieces of information beside it: the nomenclature version, the reference period, and the source of the code. The version states whether the code is a NAF rev. 2 code or a NAF 2025 code. The reference period states the time the dataset describes. The source states whether the code was copied from Sirene, assigned by the dataset publisher, or supplied by the unit itself. A bare code, without version, period or source, cannot be read reliably after a nomenclature change.
It may belong to either version, it may describe a period in either version, and it may have been copied at a time when the entry has since changed. The first task in reading a French dataset is therefore to find those three pieces of information, not to interpret the digits.
What does a bare code hide?
A bare code hides the version change. The same digits can sit in different places under different versions, and different digits can describe the same activity after renumbering or restructuring. The section letter shift after the split of the old Section J makes the risk concrete: letters after the split moved one step, so a letter read without its version misplaces the heading. The sales channel change makes the risk concrete in a different way: headings divided by channel no longer exist, so a channel code found in an old dataset has no direct equivalent in a new dataset. A bare code also hides the date of copying. A Sirene entry copied in 2026 (FIXED) may show the old code, while the same unit shows the new code in Sirene from 1 January 2027 (FIXED). A dataset that does not state when its codes were copied cannot be used for the current entry.
| Information beside the code | What it prevents |
|---|---|
| Version, NAF rev. 2 or NAF 2025 | Misreading a code from the wrong version |
| Reference period | Comparing figures from different version periods as if they were alike |
| Source, Sirene or publisher assigned | Treating a publisher assigned code as a register entry |
| Date copied | Treating an old copy as the current entry |
The table above is a checklist for reading a dataset. It names no codes, because the check is the same for every code in the dataset.
How is a dataset code traced?
A dataset code is traced in the same three steps as any old code: find the correspondence row for the heading in the version stated, read the explanatory note for each destination, and confirm the entry for a specific unit in Sirene. The trace needs the version first. Without it, the correspondence row cannot be chosen, because the row depends on the starting version. A dataset that states its version clearly can be traced. A dataset that does not state its version should be asked about, through the publisher, before any comparison is made. A reader should not guess the version from the digits, because the digits alone do not carry it. The publisher’s documentation, the publication notes, and the Sirene entry together give a complete trace. Any one of them alone gives an incomplete one.
How are old and new figures compared?
Old and new figures are compared through the correspondence table and any comparable series that INSEE or Eurostat publishes, not by matching digits. Where an old heading splits, the old figure cannot be divided by the table alone. Where headings merge, the old figures must be combined, with care for activities that moved elsewhere. Backcasting and double reporting, prepared by Eurostat and its partners, give a comparable basis for a period. A reader should use the published comparable series where one exists, and should state the break where none exists. A comparison that joins figures by title, without the table and without a break note, looks precise and is unreliable. The table shows the link. The comparable series shows the numbers. The break note states the limit.
What does a dataset code not decide?
A dataset code does not decide the entry for a specific unit, and it does not decide tax, licensing, funding or collective agreement questions. A code in a dataset is a copy of an entry, or an assignment by the publisher, made for the dataset’s own purpose. The entry itself is in Sirene, and INSEE confirms it. A reader who needs the current code for a unit should check Sirene, using the SIREN number, rather than relying on a dataset copy. A reader who needs the meaning of a heading should check the INSEE nomenclature page for that heading, in the version stated in the dataset.
Read the version, the period and the source beside every French code, trace it through the correspondence material and the notes, and let Sirene confirm the current entry for the unit concerned. ”