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_NUMBER for the float identity
  • CYCLE_NUMBER for the profile sequence
  • JULD for time information
  • LATITUDE
  • LONGITUDE

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: pressure
  • TEMP: in-situ temperature
  • PSAL: Practical Salinity

Some files also include adjusted versions such as:

  • PRES_ADJUSTED
  • TEMP_ADJUSTED
  • PSAL_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_QC
  • TEMP_QC
  • PSAL_QC
  • POSITION_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:

  1. Float identity
  2. Cycle number
  3. Time
  4. Latitude and longitude
  5. DATA_MODE, or PARAMETER_DATA_MODE for BGC parameters
  6. Pressure, temperature, and salinity from the correct raw or adjusted fields
  7. 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:

  • TEMP
  • TEMP_ADJUSTED

or

  • PSAL
  • PSAL_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. For R, use PARAM with PARAM_QC. For A or D, use PARAM_ADJUSTED with PARAM_ADJUSTED_QC and, when needed, PARAM_ADJUSTED_ERROR.
  • In a BGC profile, DATA_MODE alone is not sufficient because each parameter can be processed differently. Read PARAMETER_DATA_MODE for each parameter and profile. For A or D, use that parameter’s adjusted fields. For R, 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:

Argo profile search in OceanGraph

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