DraftResearch specification · version 0.1.0-draft · subject to change

One instant. Two integers. A named time scale.

UTP is a draft protocol for writing an instant down exactly: whole SI seconds and 100‑picosecond ticks counted from 2000-01-01 12:00:00 Terrestrial Time, with one canonical spelling and integer arithmetic specified to the last tick. Local clocks and calendar dates are computed from that instant for display, never written into it.

833630400:1234567890 UTP
2026-06-02 00:00:00.123456789 TT, which is 2026-06-01 23:58:50.939456789 UTC.
§1

Anatomy of a timecode

833630400:1234567890 UTP
  1. 1 · seconds

    Whole SI seconds since J2000.0, noon on 2000-01-01 TT. A signed 64-bit integer: negative before the epoch, about ±292 billion years of range.

  2. 2 · ticks

    Always ten digits, 0000000000 to 9999999999. One tick is exactly 10⁻¹⁰ s, or 100 ps. Here, 0.1234567890 s into the second.

  3. 3 · protocol marker

    UTP marks a UTP timestamp, whose count is on Terrestrial Time (TT = TAI + 32.184 s): atomic, continuous, with no leap seconds and no zone offset. It names the format, not a new time scale.

Decimal seconds since J2000.0
833630400.1234567890 s
TT calendar label
2026-06-02 00:00:00.123456789 TT
UTC label
2026-06-01 23:58:50.939456789 UTC

The value of a timecode is exactly seconds + ticks / 10¹⁰. It is a representation, not a measurement: how well any clock knows the time is a separate question.

§2

Why a new encoding

Most timestamp formats leave something implicit: the time scale, the zone, how many fractional digits mean what, or what happens when arithmetic runs off the end. UTP's case is that all of those can be fixed in the contract, so that two independent implementations reading the same string reach the same instant and the same arithmetic result.

  1. The scale is part of the format

    Every UTP timestamp counts TT, and its marker says which contract applies. There is no local offset to guess and no discontinuity to skip: one second of count is one SI second.

    J2000.0 0:0000000000 UTP
    in UTC  11:58:55.816
  2. Exact integers on a fixed grid

    Representable instants on the 100 ps grid are held exactly by a pair of integers; conversions from floating-point inputs such as Julian Date or POSIX time round to the nearest tick, ties to even. Normalization carries and borrows with floor division, and a result outside the 64-bit range is an error, never a wrap, clamp, or saturation.

    normalize(100, −1)
      → (99, 9999999999)
    normalize(0, −25000000000)
      → (−3, 5000000000)
  3. One canonical spelling

    The emitter always writes the ten-digit suffix form. The parser accepts that and the documented prefix form, nothing looser: a shortened tick field could be read as left- or right-padded, so it is rejected rather than guessed.

    accepted 0:5000000000 UTP
    rejected 0:5 UTP
  4. Decimal precision you can project

    Because a tick is a power of ten, reducing to seconds, milliseconds, microseconds or nanoseconds is a decimal shift with half-to-even rounding and a stated error bound. The canonical value is never replaced by its projection.

    full 0.2500000000
    ms   0.250
  5. Order and storage that behave

    Sorting by (seconds, ticks) is chronological. Both fields fit 64-bit integer columns; 32-bit types are ruled out because ticks reach past 2³².

    CHECK (utime_ticks
      BETWEEN 0 AND 9999999999)
  6. Agreement you can test

    The draft includes language-neutral test vectors for formatting, parsing, normalization and projection, derived from the specification rather than from any one implementation. Cross-language conformance is the goal, and still work in progress. The marker spelling shown here is proposed; reference parsers and test vectors have not yet migrated.

    (833630400, 1234567890)
      → "833630400:1234567890 UTP"

Strict parsing, by example

Inputs a conforming parser accepts and rejects, in the proposed draft syntax
Input and resultWhy
0:5000000000 UTP
Accepted
Half a second after J2000.0.
UTP:0:5000000000
Accepted
The same instant in the alternate prefix form.
-1:5000000000 UTP
Accepted
Half a second before J2000.0: seconds are floored, ticks never negative.
0:5 UTP
Rejected
Is that 0.5 ns or 0.5 s? Short tick fields are ambiguous across nine orders of magnitude.
01:0000000000 UTP
Rejected
Leading zero. The grammar admits one spelling of each seconds value.
0:0000000000 utp
Rejected
The protocol marker is case-sensitive.
0:10000000000 UTP
Rejected
Eleven digits. A full second of ticks must be normalized to 1:0000000000 first.
§3

Store the instant, render the clock

UTP separates what is stored from how it is shown. The stored value is a single count; each civil label is derived from it with whatever rules that view needs.

The core protocol represents universal instants. True Local Time is a separate, related proposal for longitude-based local clocks without time zones or seasonal clock changes; this draft does not specify or implement it, though a later version might. Calendar design is separate work too. The zone labels below only show that today's civil rules can still be applied as views.

Stored once833630400:1234567890 UTP

Full precision. The single source of truth for exchange and arithmetic.

  • 2026-06-02 00:00:00.123456789 TTFixed rule: J2000.0 plus the count.
  • 2026-06-01 23:58:50.939456789 UTCNeeds the TAI − UTC offset in force on that date (37 s).
  • 2026-06-01 18:58:50.939 CDTChicago under today's zone and daylight-saving rules, shown for compatibility.
  • 2026-06-02 08:58:50.939 JSTTokyo under today's zone rules: same instant, different civil label.
  • 833630400.123An application log at the ms tier: lossy, and labelled as such.
§4

Resolution, not accuracy

A tick is the smallest step the encoding can name. In one tick, light travels 2.99792458 cm. That says nothing about how well a given clock knows the time: an internet-synchronized computer is typically good to milliseconds. UTP lets each consumer project to the precision it actually has.

  1. 1 s10⁰
  2. 10⁻¹
  3. 10⁻²
  4. ms10⁻³
  5. 10⁻⁴
  6. 10⁻⁵
  7. µs10⁻⁶
  8. 10⁻⁷
  9. 10⁻⁸
  10. ns10⁻⁹
  11. tick10⁻¹⁰
Ten decades from one second to one tick. Standard projection tiers are labelled.
Projecting 833630400:1234567890 UTP to decimal seconds, half-to-even
TierDigitsProjected valueMax error
s0833630400½ s
ms3833630400.123½ ms
µs6833630400.123457½ µs
ns9833630400.123456789½ ns
full10833630400.1234567890none (identity)

Projections are for display and downstream consumers. Only the full tier round-trips exactly; arithmetic belongs on the canonical pair.

§5

Time scales and conversions

The draft specifies how a UTP timestamp relates to the scales people already use. Some relations are constant and exact. UTC is not: its offset from atomic time has changed over the decades, so every conversion depends on the date.

Conversions between the stored TT count and other scales
ScaleRelationExactness
TTThe stored count itselfUnderlying scale of every UTP timestamp
TAITT − 32.184 sConstant offset; exact in ticks
GPS timeSeconds since 1980-01-06 = UTP seconds + 630 763 148.816 sConstant offset; exact in ticks
UTCTT − 32.184 s − (TAI − UTC for that date)The offset is exact in ticks where the published leap-second table covers the date. A UTC label printed to nanoseconds drops the last tick digit.
POSIX timeThe UTC calendar label, counting every day as 86 400 sInstants inside a leap second map to the following midnight. Near present-day dates a double-precision POSIX value is spaced about 0.24 µs apart, far coarser than one tick.
TT Julian DateOut: a two-part (jd1, jd2) pair of doubles. In: the two parts are summed exactly.Out: the day fraction is correctly rounded. In: the sum is rounded to the nearest tick, ties to even.

Historical conversions

From 1972, the offset between TT and UTC is known exactly from the published TAI − UTC table. Before 1972, UTC used fractional steps and any value is model-dependent; before 1960, UTC did not exist.

Example: TAI − UTC was 32 s at the epoch, so J2000.0 is 2000-01-01 11:58:55.816 UTC. Using today's 37 s would put it five seconds early.

Prospective conversions

Beyond the expiry of the table an implementation ships, the last known offset is assumed and the result is provisional. Implementations must document which table they use and when it expires.

A change in UTC policy does not turn an expired table into a guarantee about the future.

§6

The 2026 UTC decision

At its 28th meeting in October 2026, the General Conference on Weights and Measures adopted Resolution 5: continuous UTC takes effect on 20 May 2027, with the difference |UT1 − UTC| allowed to reach 3 600 s. The resolution sets a limit, not a scheduled correction.

For UTP this settles a question of emphasis. Avoiding future leap seconds is no longer a reason to choose it; the case rests on the representation and operation contract above. The leap seconds already in the record remain, so historical conversion still needs the table.

§7

Status and open questions

UTP is a research draft. Its specification and test vectors are not yet published, and details may change before 1.0.0.

What the draft defines

  • A data model of signed seconds and normalized ticks.
  • A strict wire grammar with canonical and prefix forms.
  • Normalization and overflow behaviour.
  • Display tiers with half-to-even projection.
  • Conversions to TAI, GPS time, Julian Date and POSIX time.
  • Language-neutral test vectors.

What it does not claim

  • Adoption by any standards body.
  • A clock or a time-synchronization service.
  • Clock accuracy to 100 ps.
  • A specification, implementation or adoption of True Local Time or a new calendar.
  • Completed, conforming implementations across languages.
  • Compatibility before 1.0.0. Earlier drafts used a different tick and must be converted explicitly.

Open questions

  • What UTP adds over continuous UTC in existing formats, including migration costs.
  • Conversion data policy after the UTC transition.
  • Whether a later version should specify True Local Time, a separate related proposal whose draft may be published on its own.
  • Calendar design, kept separate from the instant protocol.
  • Display that follows Earth rotation (UT1), a separate question from True Local Time.
  • A reserved sub-tick extension; values finer than 1 ps would also need reference-frame metadata.
  • A compact binary encoding.

Where to go from here