On this page
An Argo NetCDF file (.nc) stores measurement arrays together with dimensions, metadata, and quality-control flags. Identify the float, time, and location, then connect the measurements to their quality fields to understand the profile structure.
If you want a profile-centered overview before the file-format details, start with How to Read Argo Float Data for Beginners (What to Look at First).
What Is NetCDF?
NetCDF stands for Network Common Data Form. It is a file format widely used for scientific data, especially when the data includes multiple variables, metadata, and dimensions such as time, depth, latitude, and longitude.
Why Argo Uses NetCDF
Argo data is more than a single column of temperature values.
A profile can include:
- Float identity
- Cycle information
- Position
- Time
- Pressure levels
- Temperature and salinity
- Quality flags
- Additional variables such as oxygen in some cases
NetCDF is useful because it keeps those components together in a consistent machine-readable format.
1. Observation Context: What Profile Am I Looking At?
Before worrying about the measurement arrays, identify the observation itself.
The first questions are:
- Which float produced this profile?
- Which cycle is it?
- When was it taken?
- Where was it reported?
Common fields you will often encounter include:
PLATFORM_NUMBERfor the float identityCYCLE_NUMBERfor the profile sequenceJULDfor time informationLATITUDELONGITUDE
2. Measurement Arrays: What Was Observed Through the Water Column?
Once you know the profile context, move to the measurement arrays.
In many core Argo profile files, the most important variables are:
PRES: pressureTEMP: in-situ temperaturePSAL: Practical Salinity
Some files also include adjusted versions such as:
PRES_ADJUSTEDTEMP_ADJUSTEDPSAL_ADJUSTED
PRES, TEMP, and PSAL are the raw core variables: pressure, in-situ temperature, and Practical Salinity. Potential temperature and Absolute Salinity are derived quantities, not replacements for these standard variables in a core Argo profile file.
If you are using biogeochemical Argo data, you may also encounter variables such as dissolved oxygen or other sensor products. But for first-pass understanding, pressure, temperature, and salinity are usually enough.
3. Quality Information: Can I Trust Every Value Equally?
One reason Argo NetCDF files feel complicated is that they do not store measurements alone. They also store quality information.
You may see fields such as:
PRES_QCTEMP_QCPSAL_QCPOSITION_QC
Select raw or adjusted values from the data mode, then use the matching QC and error fields before scientific interpretation.
A questionable point or missing value does not automatically make the whole profile unusable.
4. Dimensions: Why Do the Arrays Have Different Shapes?
Another common point of confusion is the array structure.
Argo NetCDF files often organize values using dimensions such as:
- Number of profiles
- Number of vertical levels
- Number of parameters
That means some variables look like one-dimensional arrays, while others are stored across more than one dimension.
Beginners often get stuck here because they expect the file to behave like a simple spreadsheet. But the data is hierarchical:
- A profile file can contain one or more profile or sampling-scheme records
- A profile can have many depth or pressure levels
- Each level can have several measured variables
In version-3 profile files these are commonly represented by dimensions such as N_PROF, N_LEVELS, and N_PARAM. N_PROF can be greater than one when a cycle contains different vertical sampling schemes, so a cycle number is not always a one-to-one identifier for a single array of levels.
The First Variables to Check
If you open an Argo NetCDF file and want the fastest path to understanding, inspect the data in this order:
- Float identity
- Cycle number
- Time
- Latitude and longitude
DATA_MODE, orPARAMETER_DATA_MODEfor BGC parameters- Pressure, temperature, and salinity from the correct raw or adjusted fields
- Matching quality-control and error fields
Raw vs Adjusted Variables
One detail that often confuses beginners is the presence of both raw-looking variables and adjusted variables.
You may see a pair such as:
TEMPTEMP_ADJUSTED
or
PSALPSAL_ADJUSTED
Adjusted values have had an Argo calibration or correction applied. That adjustment can be produced in real time (A) or during delayed-mode expert processing (D); it does not simply mean “a value corrected later.”
Use the data-mode fields rather than guessing from whether an adjusted array exists:
- In a core profile, read
DATA_MODE. ForR, usePARAMwithPARAM_QC. ForAorD, usePARAM_ADJUSTEDwithPARAM_ADJUSTED_QCand, when needed,PARAM_ADJUSTED_ERROR. - In a BGC profile,
DATA_MODEalone is not sufficient because each parameter can be processed differently. ReadPARAMETER_DATA_MODEfor each parameter and profile. ForAorD, use that parameter’s adjusted fields. ForR, only raw values exist, but Argo warns that raw BGC accuracy is generally unsuitable for direct scientific use by non-experts.
Do not combine a raw value with an adjusted QC flag, or mix raw and adjusted parameters without an explicit scientific reason.
If you plan to serve these profiles from your own web application, you also need to decide what happens before delivery and what happens in the browser. From NetCDF to the Browser: Designing a Web App for Ocean Data describes that division of work.
A Better First Step: Understand the Observation Before the File
OceanGraph is useful because it lets you approach Argo data from the observation side first.
Instead of beginning with file parsing, you can:
- Search real profiles by region, time, and WMO ID
- Inspect the profile context directly
- Open vertical profiles immediately
- Compare several observations before deciding what to code later
Useful follow-up pages are:
- Search and Bookmark
- Analysis Lab: Vertical Profiles (JSON upload)
- Visualizing Argo Float Data Without Python (Step-by-Step Guide)

Once you already know which float, cycle, or pattern matters, the NetCDF file becomes much easier to approach.
