PhysioBank Annotations

Most PhysioBank databases include one or more sets of annotations for each recording. Annotations are labels that point to specific locations within a recording and describe events at those locations. For example, many of the recordings that contain ECG signals have annotations that indicate the times of occurrence and types of each individual heart beat ("beat-by-beat annotations").

A dictionary of signals is also available.

Annotations can be examined using many different programs available on this web site. Among these are the PhysioBank ATM and LightWAVE, which can be used from your web browser; and many components of PhysioToolkit that can be freely downloaded and run on your own computer, including rdann, WAVE, pschart, and psfd. All of these programs display annotation types using a common set of codes (mnemonics); many of these programs, and others in PhysioToolkit, accept these codes as user input (for example, to select specific annotation types for analysis).

The standard set of annotation codes was originally defined for ECGs, and includes both beat annotations and non-beat annotations. Most PhysioBank databases use these codes as described below. Refer to the documentation for each database to confirm if the annotation codes have their standard meanings.

Beat annotations:

NNormal beat (displayed as "·" by the PhysioBank ATM, LightWAVE, pschart, and psfd)
LLeft bundle branch block beat
RRight bundle branch block beat
BBundle branch block beat (unspecified)
AAtrial premature beat
aAberrated atrial premature beat
JNodal (junctional) premature beat
SSupraventricular premature or ectopic beat (atrial or nodal)
VPremature ventricular contraction
rR-on-T premature ventricular contraction
FFusion of ventricular and normal beat
eAtrial escape beat
jNodal (junctional) escape beat
nSupraventricular escape beat (atrial or nodal)
EVentricular escape beat
/Paced beat
fFusion of paced and normal beat
QUnclassifiable beat
?Beat not classified during learning

Non-beat annotations:

[Start of ventricular flutter/fibrillation
!Ventricular flutter wave
]End of ventricular flutter/fibrillation
xNon-conducted P-wave (blocked APC)
(Waveform onset
)Waveform end
pPeak of P-wave
tPeak of T-wave
uPeak of U-wave
`PQ junction
^(Non-captured) pacemaker artifact
|Isolated QRS-like artifact [1]
~Change in signal quality [1]
+Rhythm change [2]
sST segment change [2]
TT-wave change [2]
=Measurement annotation [2]
"Comment annotation [2]
@Link to external data [3]

Each instance of an annotation may have up to six attributes:

rdann presents these attributes in left-to-right order on each output line, although aux is omitted if (as is most often true) it is empty.

Annotations are viewed and selected using mnemonic codes rather than the numeric anntyp codes used within the annotation files. Annotations can be read by C, C++, and Fortran applications using getann, and they can be written using putann, functions defined within the WFDB library. Matlab and Octave programs can read and write annotations using these m-files. Alternatively, annotations can be read by scripting language applications using rdann, and they can be written using wrann, programs belonging to the WFDB Software Package. Details on the format of annotation files are available here.


  1. In artifact and signal quality change annotations, each non-zero bit from the four least significant bits in the subtyp field of the annotation indicates that the corresponding signal contains noise (the least significant bit corresponds to signal 0). The four high bits, if non-zero, indicate that the corresponding signals are unreadable (because of very high noise amplitude, very low signal amplitude, loss of signal, or some combination of these). These annotations, where they exist, reflect the expert annotator's subjective judgements only. rdann and the PhysioBank ATM present the subtyp field in the fourth column of output, to the right of the annotation code. When displaying signal quality change annotations, the ATM, pschart, psfd, and WAVE do not show the annotation code (~) itself; rather, they display a string with one character (c for clean, n for noisy, or u for unreadable) for each signal (beginning with signal 0).
  2. In rhythm, ST segment, and T-wave change annotations, and in measurement and comment annotations, the aux field contains an ASCII string (with prefixed byte count) describing the rhythm, ST segment, T-wave change, measurement, or the nature of the comment. By convention, the character that follows the byte count in the aux field of a + annotation is "(". The most commonly used rhythm annotation strings are:
    (ABAtrial bigeminy
    (AFIBAtrial fibrillation
    (AFLAtrial flutter
    (BVentricular bigeminy
    (BII2° heart block
    (IVRIdioventricular rhythm
    (NNormal sinus rhythm
    (NODNodal (A-V junctional) rhythm
    (PPaced rhythm
    (PREXPre-excitation (WPW)
    (SBRSinus bradycardia
    (SVTASupraventricular tachyarrhythmia
    (TVentricular trigeminy
    (VFLVentricular flutter
    (VTVentricular tachycardia
    In a few cases, other strings have been used; see the documentation for the associated database for further information in such cases. rdann and the PhysioBank ATM's "Show annotations as text" tool present the aux string at the end of the line (following the sixth column of output) for any annotation that has a non-empty aux field. Programs such as the ATM's "Plot waveforms" tool, LightWAVE, pschart, psfd, and WAVE display the aux string in place of the annotation code; by convention, rhythm labels appear below beat labels, and other aux strings appear above beat labels. When waveforms are shown at condensed scales such that aux strings might overlap, some of these programs automatically or optionally produce abbreviated versions of the aux strings in order to keep the display readable; refer to the documentation for each program for further details.
  3. The aux field of a link annotation contains a URL (a uniform resource locator, in the form suitable for passing to a web browser. Link annotations may be used to associate extended text, images, or other data with an annotation file. If the aux field contains any whitespace, text following the first whitespace is taken as descriptive text to be displayed by a WFDB browser such as WAVE. If possible, link text is shown underlined and in blue.

Questions and Comments

If you would like help understanding, using, or downloading content, please see our Frequently Asked Questions.

If you have any comments, feedback, or particular questions regarding this page, please send them to the webmaster.

Comments and issues can also be raised on PhysioNet's GitHub page.

Updated Wednesday, 6 July 2016 at 14:41 BRT

PhysioNet is supported by the National Institute of General Medical Sciences (NIGMS) and the National Institute of Biomedical Imaging and Bioengineering (NIBIB) under NIH grant number 2R01GM104987-09.