Input channels

The Time Tagger has 8 or 18 input channels (SMA-connectors). The electrical characteristics are tabulated below. Both rising and falling edges are detected on the input channels. In the software, rising edges correspond to channel numbers 1 to 8 (Ultra: 1 to 18) and falling edges correspond to respective channel numbers -1 to -8 (Ultra: -1 to -18). Thereby, you can treat rising and falling edges in a fully equivalent fashion.

Electrical characteristics

Property Time Tagger 20 Time Tagger Ultra
Termination 50 Ω 50 Ω
Input voltage range 0.0 to 5.0 V -5.0 to 5.0 V
Trigger level range 0.0 to 2.5 V -2.5 to 2.5 V
Minimum signal level 100 mV 100 mV
Minimum pulse width 1.2 ns 0.8 ns

Data connection

The Time Tagger 20 is powered via the USB connection. Therefore, you should ensure that the USB port is capable of providing the full specified current (500 mA). A USB >= 2.0 data connection is required for the performance specified here. Operating the device via a USB hub is strongly discouraged. The Time Tagger 20 can stream about 8 M tags per second.

The data connection of the Time Tagger Ultra is USB 3.0 and therefore the number of tags steamed to the PC can exceed 65 M tags per second. The actual number highly depends on the performance of the CPU the Time Tagger Ultra is connected to and the evaluation methods involved.

Status LEDs

The Time Tagger has two LEDs showing status information. A green LED turns on when the USB power is connected. An RGB LED shows the information tabulated below.

green firmware loaded
blinking green-orange time tags are streaming
red flash (0.1 s) an overflow occurred
continuous red repeated overflows

Test signal

The Time Tagger has a built-in test signal generator that generates a square wave with a frequency in the range 0.8 to 1.0 MHz. You can apply the test signal to any input channel instead of an external input, this is especially useful for testing, calibrating and setting up the Time Tagger initially.

Virtual channels

The architecture allows you to create virtual channels, e.g., you can create a new channel that represents the sum of two channels (logical OR), or coincidence clicks of two channels (logical AND).

Synthetic input delay

You can introduce an input delay for each channel independently. This is useful if the relative timing between two channels is important e.g. to compensate for propagation delay in cables of unequal length. The input delay can be set individually for rising and for falling edges.

Synthetic dead time

You can introduce a synthetic dead time for each channel independently. This is useful when you want to suppress consecutive clicks that are closely separated, e.g., to suppress after-pulsing of avalanche photodiodes or to suppress too high data rates. The dead time can be set individually for rising and for falling edges.

Conditional Filter

The Conditional Filter allows you to decrease the time tag rate without losing those time tags that are relevant to your application, for instance, where you have a high-frequency signal applied to at least one channel. Examples include fluorescence lifetime measurements or optical quantum information and cryptography where you want to capture synchronization clicks from a high repetition rate excitation laser.

To reduce the data rate, you discard all synchronization clicks, except those that follow after one of your low rate detector clicks, thereby forming a reduced time tag stream. The reduced time tag stream is processed by the software in the exact same fashion as the full time tag stream.

This feature is enabled by the Conditional Filter. As all channels on your Time Tagger are fully equivalent, you can specify which channels are filtered and which channels are used as triggers that enable the transmission of a subsequent tag on the filtered channels.

The time resolution of the filter is the very same as the dead time of the channels (Time Tagger 20: 6 ns, Time Tagger Ultra: 2.25 ns).

To ensure deterministic filter logic, the physical time difference between the filtered channels and triggered channels must be larger than +/- (deadtime + 3 ns). The Conditional Filter works also in the regime when signals arrive almost simultaneously, but one has to be aware of a few details described below. Note also that software-defined input delays as set by the method setInputDelay() do not apply to the Conditional Filter logic.

More details and explanations can be found in the In-Depth Guide More details can be found in the In Depth Guide: Conditional Filter.

Bin equilibration

Discretization of electrical signals is never perfect. In time-to-digital conversion, this manifests as small differences (few ps) of the bin sizes inside the converter that even varies from chip to chip. This imperfection is inherent to any time-to-digital conversion hardware. It is usually not apparent to the user, however, when correlations between two channels are measured on short time scales you might see this as a weak periodic ripple on top of your signal. We reduce the effect of this in the software at the cost of a decrease of the time resolution by \sqrt{2}. This feature is enabled by default, if your application requires time resolution down to the jitter limit, you can disable this feature.


The Time Tagger 20 is capable of continuous streaming of about 8 million tags per second on average. For the Time Tagger Ultra continuous tags streamed can exceed 65 million tags per second depending on the CPU the Time Tagger is attached to and the evaluation methods involved. Higher data rates for short times will be buffered internally so that no overflow occurs. This internal buffer is limited, therefore, if continuous higher data rates arise, data loss occurs and parts of the time tags are lost. The hardware allows you to check with timeTagger.getOverflows() whether an overflow condition has occurred. If no overflow is returned, you can be confident that every time tag is received.


When overflows occur, Time Tagger will still produce valid blocks of data and discard the invalid tags in between. Your measurement data may still be valid, albeit, your acquisition time will likely increase.

General purpose IO (available upon request)

The device is ready to be equipped with up to four general purpose IO ports (SMA-connectors), and an external clock input or output. These can be used to implement custom features such as special fast input or output triggers, enable / disable gates, software controllable input and output lines, and so on. Please contact us for custom designs.

External Clock Input

The external clock input can be used to synchronize different devices. The input clock frequency must be 1/6 GHz (approx. 167 MHz) for the Time Tagger 20 and 10 MHz for the Time Tagger Ultra.

As soon as this frequency is applied to the EXT CLK input, the Time Taggers are locked to it. The lock status can be read off the LED color:

  • Time Tagger 20
    • status led stays or blinks white when not in overflow mode (red)
  • Time Tagger Ultra
    • CLK led green: locked, red: wrong frequency

CLK Input requirements:

  • Time Tagger 20
    • Hardware Version <= 2.1
      • 0 to 5V into 50 Ohm, 0 to 2 V recommended
    • Hardware Version >= 2.2
      • 100 mVpp up to 3 Vpp AC coupled into 50 Ohm, 500 mVpp recommended
  • Time Tagger Ultra
    • 100 mVpp - 3 Vpp AC coupled into 50 Ohm, 500 mVpp recommended


The input clock signal must be stable very low jitter signal to achieve the best performance to reach the specified performance without an external clock input. Please note that the timing specifications for the Time Tagger Ultra with respect to other devices on the same clock are only met from hardware version 2.3 on.


To reach the low specified input jitter for the Time Tagger with an external clock, the input signals must be uncorrelated to the external clock.