ChemData SEDD Specifications

General Guidelines

The following sections list general guidelines for using the SEDD structure to provide data in a comparable and consistent manner. They build on or clarify the guidelines from the EPA SEDD v5.2 2A Specifications. In addition to these general guidelines, the following two files provide additional requirements for data types and valid values.

Fields (click to download) – This table lists all fields in the SEDD. Where “required” is marked “TRUE”, the field must be populated if present. Where “vvl” is marked “TRUE”, the field must be populated with a valid value (see below). Where “conditional” is marked “TRUE”, there are conditional requirements on the field, and notes are provided describing the conditional check. (last updated March 23, 2020)

Valid Values List (click to download) – This table lists valid values for all valid-value constrained fields. Please note that all valid values are case sensitive. If you believe this list needs updating, please contact us. (last updated November 3, 2021)

Please note: the following abbreviations are used in the guidelines below. Fields and nodes are italicized.

  • Header = h
  • SamplePlusMethod = spm
  • ReportedResults = rr
  • PreparationPlusCleanups = ppc
  • Analysis = a
  • Analytes = ant


A valid date format must be defined in the field h.DateFormat. That date format must then be used in all subsequent date-time fields throughout the SEDD (e.g. LabReportedDate, CollectedDate, AnalyzedDate). Currently, we do not support timezones. All date-times should be converted to UTC prior to generating the SEDD.


A valid method ID must be listed in all ClientMethodID fields (reported in multiple nodes). Alternate names or identifiers for the method may be listed in MethodID field (reported in multiple nodes). ClientMethodID is valid-value constrained. The MethodID field is not valid-value constrained.

The analytical method should be listed in spm.ClientMethodID and a.ClientMethodID. The preparatory method should be listed in ppc.ClientMethodID.


Analytes are referenced in ChemData by Chemical Abstract Services (CAS) registry number only. Thus, a valid CAS must be listed for each analyte in the CASRegistryNumber field (reported in multiple nodes). ClientAnalyteID is a required field, and should be populated with the preferred analyte name used in the hard copy laboratory report, but is not valid-value constrained. If there is no CAS number for your analyte (e.g. in the case of analytes that are reported as ranges), use the appropriate “stand-in” CAS-alternative valid value in the valid values list (above). For example, the “CAS” for diesel range organics (DRO) is “DRO-C10-C25”.


Results for surrogates (or extracted internal standards, for isotope dilution analyses) should be reported in the analytes node only. Do not report surrogates in the reportedResults node. Per the EPA SEDD Specifications v5.2 (March 2019): “Certain analytes in certain methods are always measured on a per-analysis, not per-method, basis (e.g., surrogates and internal standards). These analytes should be reported in Analyte nodes only, not in ReportedResult nodes.”

Detection, Reporting, and Quantitation Limits

These measures of analytical sensitivity may vary from method to method and lab to lab. The important thing to note is that the ReportingLimit must always be populated with the numeric value used to report non-detect results. The only time that ReportingLimit should be left blank and ReportingLimitType = ‘NA’ would be for methods with no quantitative sensitivity limits (e.g. pH analysis).

For Department of Defense (DoD) projects, the following criteria must be met.

  • DetectionLimit = detection limit and DetectionLimitType = ‘QSM_DL’
  • ReportingLimit = limit of detection and ReportingLimitType = ‘QSM_LOD’
  • QuantitationLimit = limit of quantitation and QuantitationLimitType = ‘QSM_LOQ’

For non-DoD projects, the above can also be used, if an LOD is determined. However, for analyses where an LOD is not determined and non-detect results are reported to the quantitation limit, the following alternative is acceptable:

  • DetectionLimit = method detection limit and DetectionLimitType = ‘MDL’
  • ReportingLimit = quantitation limit and ReportingLimitType = ‘PQL’ or ‘MRL’
  • QuantitationLimit = quantitation limit and QuantitationLimitType = ‘PQL’ or ‘MRL’


Batches are handled several different ways, depending on sample handling and preparation steps for a given method. The spm.MethodBatch field should always contain the ID of the batch that relates field samples to batch-level QC samples (Stage 2A QC; e.g. method blank, LCS, MS/MSD). For most organic and inorganic methods, this is the preparation batch.

  • For methods with no separate preparation or cleanup step (e.g. many general chemistry methods):
    • List the analytical batch in spm.MethodBatch
    • Do not use the ppc node
  • For methods with a preparation step:
    • List the preparation batch in spm.MethodBatch, a.PreparationBatch, and ppc.PreparationBatch
  • For methods with a preparation and cleanup step:
    • List the preparation batch in spm.MethodBatch, a.PreparationBatch, and ppc.PreparationBatch
    • List the cleanup batch (if separate) in ppc.CleanupBatch
  • For methods with a handling step (e.g. TCLP):
    • Follow the above for analytical, preparation, and cleanup batching
    • List the handling batch in Handling.HandlingBatch

Lab Analysis ID

According to the SEDD Specifications, there are three ways to relate a ReportedResult to the Analysis that produced that result. The most common is through the LabAnalysisID field, present in the ReportedResult and Analysis nodes. Refer to the EPA SEDD v5.2 2A Specifications for alternate methods. The LabAnalysisID field should contain a unique identifier that links the ReportedResult to the Analysis that produced that result. Depending on the method, this might be a concatenation of the instrument/column ID, analysis batch, laboratory sample ID, and/or analysis date-time. Alternate ways of linking ReportedResult to Analysis (e.g. through AnalysisGroupID or AnalyteGroupID) should only be used when necessary.

Reporting Results from Multiple Runs

If the project requires reporting results from multiple runs (e.g. from multiple analyses at different dilution factors), then one result must be selected by the lab as the ‘best’ result to report in the ReportedResults and all other results must be reported in Analyte nodes under each respective Analysis node. 

From the EPA SEDD Specifications v5.2 (March 2019): “If the laboratory picks one ‘best’ result for each final reported analyte, then one SamplePlusMethod node would be used. The LabAnalysisID data element would be used to link each result to the correct underlying analysis. This is the preferred and most common approach used. If the data requester requires all potential results in addition to the laboratory selected ‘best’ result(s), then all results can be reported in Analyte nodes under each respective Analysis node.”

MS Spiking and Expected Concentration

MS spike concentration should be listed in the ExpectedResult field. ExpectedResult is NOT the native analyte concentration + spike concentration; per the EPA SEDD Specifications v5.2 (March 2019): “For these spiked samples, the expected or theoretical result would be determined only from the amount of analyte spiked and would not include any native analyte concentrations that might have been present in the original sample.”

TCLP Handling

TCLP data shall be handled in ChemData through the Handlings node (pun intended!). Below are draft specifications. We welcome your feedback; contact us.

For a solid sample that is leached through the TCLP process, then the leachate is subsequently analyzed, information regarding the TCLP process must be included in the handling node. Solid field samples and any QC samples prepared prior to leaching (e.g. leaching blank, matrix spikes, etc.) shall be listed with the following:

  • spm.matrix = ‘Soil’, ‘Sediment’, ‘Other_Solid’, etc. as appropriate (to indicate the original sample matrix)
  • spm.matrixMedium = ‘Solid’ (to indicate the medium of original sample)
  • Units = ‘mg/L’ or ‘ug/L’ (for all units reported in ReportedResults or Analyte nodes)
  • ResultBasis = ‘Leachate’ (for all results reported in ReportedResults or Analyte nodes)
  • ppc.preparationBatch = preparation batch for the batch of leachate samples, if subjected to further preparation (e.g. liquid-liquid extraction for semi-volatiles, digestion for metals)
  • ppc.clientMethodID = preparation method for the batch of leachate samples, if subjected to further preparation (e.g. 3520C for liquid-liquid extraction for semi-volatiles, 3010A for acid digestion for metals)
  • handling.handlingBatch = a unique identifier for the batch of solid samples subjected to the leaching process
  • handling.clientMethodID = ‘1311’ (for TCLP) or ‘1312’ (for SPLP)
  • handling.initialAmount = mass of soil subjected to leaching
  • handling.initialAmountUnits = ‘g’
  • handling.sampleAmount = volume of leachate
  • handling.sampleAmountUnits = ‘mL’

Any QC samples prepared in aqueous phase to accompany leachate samples for subsequent preparation and analysis should not be listed in the handlings node. These QC samples are related to the field samples through the ppc.preparationBatch field. They should have the appropriate Matrix and MatrixMedium listed in the spm node (e.g. Water and Aqueous for a water MB).

Liquid (filterable oil, or water) samples subjected to analysis directly, without leaching, should not be listed in the handling node, since these are not subjected to a separate handling procedure. Instead, results should be reported on a total basis by the appropriate test method.

In the case that a single sample (unique ClientSampleID) is subjected to Total and TCLP analysis for a given parameter, a unique LabSampleID should be designated for the TCLP analysis. Likewise, if a single sample contains multiple phases (e.g. water & sludge) that are handled differently, a unique LabSampleID should be designated for each phase. This will allow reporting the results in discrete spm nodes, and thus the handling information to be associated with the appropriate node.



9:00am – 5:00pm