Flexible Image Transport System (FITS) is an open standard defining a digital file format useful for storage, transmission, and processing of data: formatted as multi-dimensional arrays (for example a 2D image), or tables. FITS is the most commonly used digital file format in astronomy. The FITS standard was designed specifically for astronomical data and includes provisions such as describing photometric and spatial calibration information, together with image origin metadata.
The FITS format was first standardized in 1981; it has evolved gradually since then, and the most recent version (4.0) was standardized in 2016. FITS was designed with an eye towards long-term archival storage, and the maxim once FITS, always FITS represents the requirement that developments to the format must be backward compatible.
Image metadata is stored in a human-readable ASCII header. The information in this header is designed to calculate the byte offset of some information in the subsequent data unit to support direct access to the data cells. Each FITS file consists of one or more headers containing ASCII card images that carry keyword/value pairs, interleaved between data blocks. The keyword/value pairs provide information such as size, origin, coordinates, binary data format, free-form comments, history of the data, and anything else the creator desires: while many keywords are reserved for FITS use, the standard allows arbitrary use of the rest of the name-space.
FITS is also often used to store non-image data, such as spectra, photon lists, data cubes, or structured data such as multi-table databases. A FITS file may contain several extensions, and each of these may contain a data object. For example, it is possible to store x-ray and infrared exposures in the same file.
The earliest and still most commonly used type of FITS data is an image header/data block. The term 'image' is somewhat loosely applied, as the format supports data arrays of arbitrary dimension—normal image data are usually 2-D or 3-D, with the third dimension representing for example time or the color plane. The data themselves may be in one of several integers and floating-point formats, specified in the header.
FITS image headers can contain information about one or more scientific coordinate systems that are overlaid on the image itself. Images contain an implicit Cartesian coordinate system that describes the location of each pixel in the image, but scientific uses usually require working in 'world' coordinates, for example, the celestial coordinate system. As FITS has been generalized from its original form, the world coordinate system (WCS) specifications have become more and more sophisticated: early FITS images allowed a simple scaling factor to represent the size of the pixels; but recent versions of the standard permit multiple nonlinear coordinate systems, representing arbitrary distortions of the image. The WCS standard includes many different spherical projections, including, for example, the HEALPix spherical projection widely used in observing the cosmic microwave background radiation.
FITS also supports tabular data with named columns and multidimensional rows. Both binary and ASCII table formats have been specified. The data in each column of the table can be in a different format from the others. Together with the ability to string multiple header/data blocks together, this allows FITS files to represent entire relational databases.
FITS support is available in a variety of programming languages that are used for scientific work, including C, C++, C#, Fortran, IGOR Pro, IDL, Java, Julia, LabVIEW, Mathematica, MATLAB, Perl, Perl Data Language (PDL), Python, R, and Tcl. The FITS Support Office at NASA/GSFC maintains a list of libraries and platforms that currently support FITS.
Image processing programs such as ImageJ, GIMP, Photoshop, Chasys Draw IES, XnView, and IrfanView can generally read simple FITS images but frequently cannot interpret more complex tables and databases. Scientific teams frequently write their own code to interact with their FITS data, using the tools available in their language of choice. The FITS Liberator software is used by imaging scientists at the European Space Agency, the European Southern Observatory, and NASA. The SAOImage DS9 Astronomical Data Visualization Application is available for many OSs, and handles images and headers.
Many scientific computing environments make use of the coordinate system data in the FITS header to display, compare, rectify, or otherwise manipulate FITS images. Examples are the coordinate transform library included with PDL, the PLOT MAP library in the Solarsoft solar-physics-related software tree, the Starlink Project AST library in C, and the PyFITS package in Python, now merged into the Astropy library.