HDF5 property lists are collections of name-value pairs which can be passed to other HDF5 functions to control features that are typically unimportant or whose default values are usually used. In HDF5.jl, these options are typically handled by keyword arguments to such functions, which will internally create the appropriate Properties objects, and so users will not usually be required to construct them manually.

Not all properties defined by the HDF5 library are currently available in HDF5.jl. If you require additional properties, please open an issue or pull request.

Properties types


Properties used when creating attributes.

  • char_encoding: the character enconding, either :ascii or :utf8.

Properties used when accessing files.

  • alignment :: Tuple{Integer, Integer}: a (threshold, alignment) pair: any file object greater than or equal in size to threshold bytes will be aligned on an address which is a multiple of alignment. Default values are 1, implying no alignment.

  • driver: the file driver used to access the file. See Drivers.

  • driver_info (get only)

  • fclose_degree: file close degree property. One of:

    • :weak
    • :semi
    • :strong
    • :default
  • libver_bounds: a (low, high) pair: low sets the earliest possible format versions that the library will use when creating objects in the file; high sets the latest format versions that the library will be allowed to use when creating objects in the file. Values can be a VersionNumber for the hdf5 library, :earliest, or :latest . See H5P_SET_LIBVER_BOUNDS


Properties used when creating a new File. Inherits from ObjectCreateProperties, with additional properties:

  • userblock :: Integer: user block size in bytes. The default user block size is 0; it may be set to any power of 2 equal to 512 or greater (512, 1024, 2048, etc.). See H5P_SET_USERBLOCK.
  • track_order :: Bool: tracks the file creation order.

Properties used when creating a new Dataset. Inherits from ObjectCreateProperties, with additional properties:

  • alloc_time: the timing for the allocation of storage space for a dataset's raw data; one of:

    • :default

    • :early: allocate all space when the dataset is created

    • :incremental: Allocate space incrementally, as data is written to the dataset

    • :late: Allocate all space when data is first written to the dataset.


  • fill_time: the timing of when the dataset should be filled; one of:

    • :alloc: Fill when allocated
    • :never: Never fill
    • :ifset: Fill if a value is set
  • chunk: a tuple containing the size of the chunks to store each dimension. See H5P_SET_CHUNK (note that this uses Julia's column-major ordering).

  • external: A tuple of (name,offset,size), See H5P_SET_EXTERNAL.

  • filters (only valid when layout=:chunked): a filter or vector of filters that are applied to applied to each chunk of a dataset, see Filters. When accessed, will return a Filters.FilterPipeline object that can be modified in-place.

  • layout: the type of storage used to store the raw data for a dataset. Can be one of:

    • :compact: Store raw data in the dataset object header in file. This should only be used for datasets with small amounts of raw data.

    • :contiguous: Store raw data separately from the object header in one large chunk in the file.

    • :chunked: Store raw data separately from the object header as chunks of data in separate locations in the file.

    • :virtual: Draw raw data from multiple datasets in different files.


  • no_attrs_hint: Minimize the space for dataset metadata by hinting that no attributes will be added if set to true. Attributes can still be added but may exist elsewhere within the file. See H5P_SET_DSET_NO_ATTRS_HINT.

The following options are shortcuts for the various filters, and are set-only. They will be appended to the filter pipeline in the order in which they appear

  • blosc = true | level: set the H5Zblosc.BloscFilter compression filter; argument can be either true, or the compression level.

  • deflate = true | level: set the Filters.Deflate compression filter; argument can be either true, or the compression level.

  • fletcher32 = true: set the Filters.Fletcher32 checksum filter.

  • shuffle = true: set the Filters.Shuffle filter.

DatasetAccessProperties(; kws...)

Properties that control access to data in external, virtual, and chunked datasets.

  • chunk_cache: Chunk cache parameters as (nslots, nbytes, w0). Default: (521, 0x100000, 0.75)
  • efile_prefix: Path prefix for reading external files. The default is the current working directory.
    • :origin: alias for raw"$ORIGIN" will make the external file relative to the HDF5 file.
  • virtual_prefix: Path prefix for reading virtual datasets.
  • virtual_printf_gap: The maximum number of missing source files and/or datasets with the printf-style names when getting the extent of an unlimited virtual dataset
  • virtual_view: Influences whether the view of the virtual dataset includes or excludes missing mapped elements
    • :first_missing: includes all data before the first missing mapped data
    • :last_available: includes all available mapped data

See Dataset Access Properties


Properties used when transferring data to/from datasets

  • dxpl_mpio: MPI transfer mode:
    • :independent: use independent I/O access (default),
    • :collective: use collective I/O access.

Properties used when creating links.

  • char_encoding: the character enconding, either :ascii or :utf8.

  • create_intermediate_group :: Bool: if true, will create missing intermediate groups.


Properties used when creating a new object. Available options:

  • obj_track_times :: Bool: governs the recording of times associated with an object. If set to true, time data will be recorded. See H5P_SET_OBJ_TRACK_TIMES.


File drivers determine how the HDF5 is accessed. These can be set as the driver property in FileAccessProperties.


Also referred to as SEC2, this driver uses POSIX file-system functions like read and write to perform I/O to a single, permanent file on local disk with no system buffering. This driver is POSIX-compliant and is the default file driver for all systems.

MPIO(comm::MPI.Comm, info::MPI.Info)
MPIO(comm::MPI.Comm; kwargs....)

The parallel MPI file driver. This requires the use of MPI.jl, and a custom HDF5 binary that has been built with MPI support.

  • comm is the communicator over which the file will be opened.
  • info/kwargs are MPI-IO options, and are passed to MPI_FILE_OPEN.

External links