A Better Temperature System

Last updated:

Yes, it's time for another installment of "Tab gives a utopian vision of an alternate today where people knew better in the past about some minor topic". Today we're talking about temperature.

What's Wrong With Temperature?

There's a lot wrong with temperature, unfortunately. The metric system uses Kelvins to measure temp. Kelvins are defined as "the same degree size as Celsius, but 0 is absolute zero". This has some issues:

  • having the scale's zero be a meaningful zero, so that doubling the number actually corresponds to doubling some physical quantity - is good
  • but having that zero be very far away from human-meaningful quantities, particularly the two primary things humans use temperature for on a regular basis (outside temp and body temp) is really inconvenient
  • the Celsius zero and the Kelvin zero are not a round, or even whole, number of degrees apart, so interconverting involves an awkward "273.16" factor.

A lot of this comes from the fact that we invented temperature scales long before we realized that temperature even had a physically-meaningful zero. Instead, Celsius just tied its 0 and 100 to measurable, somewhat-meaningful values for humans: the freezing and boiling point of water. The resulting delta from the "real" zero, and the size of the degree, thus have no particular reason to be convenient or "round", and yeah, they're really not.

We can do better!

But What About Fahrenheit?

Yeah, what about Fahrenheit? It's not SI, but it is still metric (base-10), and I think it has some very nice qualities as well (plus some pretty bad ones).

Obvious bad thing is that its 0/100 points are meaningless; 0°F is the freezing point of saturated salt water (which, tbf, was easier to obtain than purified water, and so a more reliable liquid for gauge calibration) and, uh, for some reason 100°F is based on him setting human body temperature to 96°F? So 100 wasn't even meaningful from the start??? Nowadays of course we use the same freezing/boiling point of water definition, which gives us the convenient 32/212 pair, how nice.

Fahrenheit actually has some great qualities, tho. While the freezing point is pretty rando, it does at least mean that the 0 point is roughly as cold as it gets in temperate parts of the world. (And measuring subzero is basically just for fun anyway; below that it's all "lethally cold" and the precise number doesn't matter anyway.) Similarly, 100 is roughly as hot as it gets in temperate parts of the world. This means that outside temps range nicely over the 0-100 range (vs the roughly -15 to 45 range for Celsius).

As well, the degree size is, in my opinion, a bit better. Ten degrees Fahrenheit is more or less the minimum temperature difference that makes a difference for how you dress and respond to the weather - you'll feel 70 and 80 as different and respond accordingly, but 70 and 75 are too close to care about the difference. (Celsius's similar bands are 5 degrees apart, which is kinda round but not as good.)

So Fahrenheit gives us a meaningful 0-100 range for our daily temperature usage, and has meaningful 10-degree bands as well. That's really nice! Sure would've been good to keep that around.

Let's Get It Right

Just to get one difficulty out of the way, we can't make a temperature system that's both human-meaningful for small numbers, and useful for physics. The two desired zero points (deep space vs frozen water) are too far apart.

What we can do, tho, is make it so that converting between the "human" and "absolute" scales is as easy as possible, so the two zeros are a whole, round number of degrees apart.

Taking all the above into account, I present to you the Degrees Temp (°T), or Absolute Temp (°AT) system, an ideal system that combines the best parts of everything:

Degrees Temp, the human-usable system, is defined by the freezing point of water at 20°, and absolute zero at -500°. °AT is just °T + 500.

The freezing point of water is not 0, but it is a round, easily-memorized and easily-recognized number. 0°T, instead, is a sub-freezing temp that is, again, roughly "as cold as a temperate climate gets", similar to Fahrenheit. Also similar, 100°T is roughly as hot as a temperate climate gets.

(Converted back into existing units, 0°T is 14°F/-10°C, and 100°T is 107°F/42°C.)

By a lucky coincidence, average human body temp is 90°T, another convenient number. (Compare to 37°C or 98.6°F, both awful.)

Not that it usually matters in reality, but the boiling point of water is 210°T, yet another convenient number. I'm not imposing excess rounding here to make it look good, either: 100°C really is 210.4°T!

Swapping between human- and physics-friendly versions of the unit is also, as I mentioned earlier, trivial in this system, you just add or subtract 500° from the temperature. A far cry from 273.15°! (Or the equally horrible 459.67 for converting between Fahrenheit and Rankine.)

(If you want to convert more temps, the conversion factor between °AT and K is .5253. To convert from °C to K, add 273.16; to convert from °AT to °T, subtract 500.)

Bonus: What About Heximal?

Real Tab-heads know that base-6 is the best base for numbers to be, substantially better than base-10. This temperature scale seems pretty well-tailored to base-10, with a great 0-100 range and a round absolute zero. Can it be adapted to base-6 while maintaining its good properties?

Yes! It's not perfect, but it's slightly better in some ways, slightly worse in other ways, and overall fairly similar.

Short form: Absolute zero is now at -1000₆°T, and water freezes at 10₆°T. The rest of the system extends from that.

This means that 0₆°T is equal to about -7°C, or 19°F, slightly higher than the decimal version, and 100₆°T is equal to... 37°C or 98.4°F! That's body temperature, baby! That was a very common calibration target for older temperature scales, and is just a fun number to have at such a round value.

It does mean that the range overall is a bit narrower; negative and >100₆°T temperatures will show up more often. They'll be "very cold" and "very hot" temps, but not "hoo boy these never happen" temps, like in the decimal version. But that's okay! Realistically, readouts will have to be able to display these values anyway, so it's not a huge loss. The vast majority of outdoor temperatures you encounter will continue to be in the 0-100₆ range.

Bonus points for the fact that "room temperature" (72°F/22°C) is a nice round 40₆°T. How nice!

(You can see me working thru the logic here at https://twitter.com/tabatkins/status/1308226259374149633.)

Some Conversion Code For Nerds

If you wanna play with this system a bit, here's some JS for converting between it and C/F/K:

Decimal version:

function atFromK(degK) { return degK / 273.16 * 520; }
function kFromAT(degAT) { return degAT / 520 * 273.16; }
function tFromC(degC) { return atFromK(degC + 273.16) - 500; }
function cFromT(degT) { return kFromAT(degT + 500) - 273.16; }
function fFromT(degT) { return cFromT(degT) * 9/5 + 32; }
function tFromF(degF) { return tFromC((degF - 32) * 5/9); }

Heximal version:

function atFromK(degK) { return degK / 273.16 * 226; }
function kFromAT(degAT) { return degAT / 226 * 273.16; }
function tFromC(degC) { return atFromK(degC + 273.16) - 216; }
function cFromT(degT) { return kFromAT(degT + 216) - 273.16; }
function fFromT(degT) { return cFromT(degT) * 9/5 + 32; }
function tFromF(degF) { return tFromC((degF - 32) * 5/9); }

(You'll want to call .toString(6) on the heximal results, and/or use parseInt(X, 6) on the heximal inputs, of course. Like fFromT(parseInt("100", 6)) or tFromC(0).toString(6).)

Dramatic Mage Duels in D&D 5e

Last updated:

I shadow-DM my little brother's D&D game, helping him plan story arcs and dramatic battles. His next session will be a boss fight, where the sorcerer PC will be facing off against their evil spellcaster mother. He thought it would be both dramatic and thematic for the two of them to fight in a "mage duel" while the rest of the party fought the enemy horde, which sounded bad-ass to me. But how should we represent this?

Right off the bat, "just use normal spellcasting" was out. It's boring, and would largely just be a matter of "try to cast, get counterspelled, they try to cast, you counterspell, etc" until one of them runs out of high-level spells. Boring and frustrating, far from dramatic, and in the meantime the other characters might be actually beating up the mom in melee, which isn't thematically appropriate either.

Bro recalled that Mage Hand Press, his favorite 5e imprint, had published a simple Mage Duel ruleset, as part of a larger set of "wizarding contests". This looked like a good starting point, but it was clearly designed to be a fast, simple resolution mechanism as a small part of a larger roleplaying session around a wizarding carnival or tourney. It really didn't have any strategic depth (just choose your highest-level slot each time and hope you roll well), which didn't suit our dramatic boss fight.

So we iterated on this a bit, and ended up with something that I think will be quite fun at the table. It has some actual strategic choice, rewards predicting the opponent's moves, and lets the duel have an effect on the rest of the battle being waged around them.

Dramatic Mage Duels!

At the start of each round, before anyone else takes actions, the two duelists secretly choose a spell slot they want to expend, and a dueling stance. They reveal both, then make an opposed Arcana check, using their spellcasting ability. Each duelist gets a bonus to this check equal to half the chosen slot's level (round down, as usual). The loser of the opposed check takes (winner's slot)d6 damage. A tie causes both characters to take (their slot)d6 damage, as the spells rebound.

There are three dueling stances: attack, shield, and tricky. The two opponent's stances are compared in a rock-paper-scissors fashion: attack beats tricky, tricky beats shield, and shield beats attack. If one of the characters win, they get advantage on the Arcana check. (Ties have no effect.)

In addition to the direct damage the duelists deal to each other, the chaotic energies of their duel spill out and buff/debuff the rest of the combatants. Each duelist also makes a roll on the Chaotic Buff and Chaotic Debuff tables, adding their expended slot's level to the Buff roll and subtracting it from the Debuff roll. Everyone else on the duelist's side of the combat benefits from the rolled buff and suffers the rolled debuff.

Finally, the chosen stance has additional effects. If you choose Attack, you deal 3d6 damage to your opponent (whether you win or lose the Arcana contest). If you choose Tricky, you roll on the Buff table twice and choose the result you prefer. If you choose Shield, you roll on the Debuff table twice and choose the result you prefer.

The duel is over when either duelist yields, or dies.

Buff And Debuff Tables

These are taken with only slight modifications from the very nice Sorcerer tweak by SwordMeow (direct link to PDF), which presents a much more interesting Wild Magic Sorcerer than the original.

Party Buffs
1No effect.
2A pleasant smell fills the air around the party.
3Small plants grow to bloom around the party's feet.
4The party's clothes become cleaned, and faded dyes return to full brightness.
5The party becomes sheathed in a thin layer of protective energy. They each gain temp HP equal to the spell's level + your spellcasting modifier.
6The party is innervated. Their movement speed increases by 15' until the start of your next turn.
7The energy of the spell flashes brightly around your party. On each party member's turn, an enemy of their choice within 5' must make a Constitution saving throw against your Spell Save DC or be blinded until your next turn.
8The energy of the spell swirls around your party and sheathes their weapons. Until your next turn, they can choose to have any damage they deal become Force damage instead.
9With a surge of energy, your party is able to shift their position. During each of their turns, your party can teleport up to 10' as a free action.
10Arcs of chaotic energy emanate from your party. A random hostile creature within 15' of each party member takes 1d8 lightning damage.
11Enemy attacks are pushed away. The next attack against each party member before the start of your next turn is made with disadvantage, or the next saving throw each party member makes before the start of your next turn is made with advantage, whichever comes first for each party member.
12The air around your party crackles. Until the start of your next turn, if a creature with 30' of a party member hits them with an attack, they can use their reaction to deal {level of the slot}d4 lightning damage to the attacker.
13At the start of each party member's next turn, they roll on this table and gain the effect on themselves only.
14Your party becomes energetic. They gain the effects of the Haste spell until the start of your next turn, ignoring the lethargy.
15Your party's strength amplifies. Once during each of their next turns, they can add {level of the slot}d6 to the damage of an attack or ability they make, of one of the damage types already dealt by the attack.
16If a party member takes damage from a spell before the start of your next turn, they can roll 1d8 and subtract the result from the damage they would take.
17Your party's defense seem to deflect the enemy's attacks. Until the start of your next turn, all attacks made against your party have disadvantage, and all saving throws your party members make have advantage.
18Your party's attacks seem to guide themselves to their destinations. Until the start of your next turn, your party gains advantage on all attack rolls, and impose disadvantage on all saving throws their opponents make.
19The spell is efficient, allowing you to siphon excess magic. You regain the spell slot you expended for the duel this round.
20Roll twice on this table and gain both effects, rerolling additional 20s.
Party Debuffs
1Roll twice on this table and suffer both effects, rerolling additional 1s.
2The spell requires additional energy to cast. You must expend another spell slot of the chosen level, or else you automatically lose the opposed Arcana check this round. If you have the Font of Magic feature, you can choose to instead expend sorcery points equal to the slot's level.
3The party's movements become erratic and difficult to control. Until the start of your next turn, they have disadvantage on any attack rolls they make, and enemies have advantage on saving throws against their effects.
4The party's movements seem to have them dodging directly into enemy attacks. Until the start of your next turn, enemies have advantage on all attacks against your party, and your party has disadvantage on all saving throws.
5If a party member takes damage from a spell before the start of your next turn, they take an additional 1d8 damage of a type the spell already deals.
6The party's energy bleeds away. If they deal damage before your next turn, the damage decreases by {level of the slot}d6.
7Electricity courses thru your party's muscles, causing them to tense up. They suffer the effects of the Slow spell until the start of your next turn.
8At the start of each party member's next turn, they roll on this table and suffer the effect on themselves only.
9Static energy builds up in your party, waiting for something to ignite it. Until the start of your next turn, if a party member is damage by an attack, they take an additional {level of the slot}d4 lightning damage.
10Enemy attacks are drawn to your party. The next attack on each party member before the start of your next turn has advantage, or the next saving throw they make against a hostile effect has disadvantage, whichever comes first.
11Arcs of chaotic energy emanate from your party. A random friendly creature within 15' of each party member takes 1d8 lightning damage.
12Your party's position becomes unstable, and they blink side to side wildly. Each party member immediately teleports to a random unoccupied location 10' away from their current location.
13Your party's attacks are blunted, unable to penetrate defenses. Until the start of your next turn, all enemies with resistance to some type of damage instead have immunity.
14A flash of light bursts in each party member's face. They must make a Constitution save against your Spell Save DC or be blinded until the start of your next turn.
15Your party is enervated. Their movement speed decreases by 15' until the start of your next turn.
16Some of your spell's energy backfires. Each party member takes force damage equal to the slot's level + your spellcasting ability modifier.
17The party suffers a faint ringing in their ears for the next minute.
18Fractal, lightning-like scars appear on your party's hands and arms, which disappear when they receive any magical healing.
19Your party immediately becomes thirsty and hungry.
20No effect.

Houserules in my D&D Games

Last updated:

I'm starting a new D&D campaign next week (just did our Session Zero last week), and part of that is finally gathering together what new houserules I want to apply to my games going forward.

A Whole Lot Of Things Are Flexible

First of all, everything in the [Class Features UA](https://media.wizards.com/2019/dnd/downloads/UA-ClassFeatures.pdf] is allowed. This is mostly just a lot of things giving players a little more flexibility - letting them swap out spells and other abilities for ones of equal level, etc. It's all solid.

Second, casting classes can use any mental stat you want. Want a Wizard that casts with Cha rather than Int? Go for it. Want a wise Bard? Cool. A smart Warlock? Excellent. The mental stats are all more or less interchangeable with each other, and the assignment of stats to classes (and the attendant ease or difficulty of multiclassing as a result) is 100% flavor-based, not balanced-based. (Other classes that use mental stats for abilities are similarly flexible - Monks can use Int or Cha for their AC, abilities, etc.)

Third, damage types are interchangeable. Want a lightning-themed wizard, and annoyed at the relative paucity of lightning damage compared to fire? That's fine, take any damaging spell and swap it to lightning damage. In general, fire/ice/lightning/thunder/poison are all equivalent and can be swapped, and radiant/necrotic/psychic/force are also equivalent and swappable. Swapping between the groups is a minor balance concern; it's possible, but requires some manual tweaking (usually just adjusting the damage dice).

Finally and most generally, anything can be reflavored. The mechanical skeleton - the actual rules and numbers - are important to maintain, but if you wanna make it present differently, fuckin' go wild. Nothing is canonical, please take whatever rules can best be bent to your concept and reuse them.


D&D's default flavor can work for a lot of people, but there's so much more you can do when you open it up a little.

Unearthed Arcana and Decent Homebrew Is Fine

Stuff from Unearthed Arcana is often quite fun and reasonable; unless something's been rewritten since, consider it usable.

Homebrew stuff is also generally fine; I've been doing homebrew design on a personal level for 20 years, and am pretty good at eyeing balance and tweaking when necessary. We can always adjust on the fly if it turns out too weak or strong.


There's just a lot of great homebrew stuff! I particularly like a lot of stuff from Mage Hand Press, like the Warmage (cantrip-focused fighter) and the Craftsman (item-crafting warrior). And 5e is far easier to balance for than previous editions, so a lot of it is pretty high quality.

Mundane Equipment Is In The Wagon


You can track your personal equipment normally; whatever you want to make sure you have on you.

Otherwise, all your mundane equipment is considered to be in the Wagon (/Backpack/Home Base/whatever). Everyone contributes money to the Wagon's pool; whenever you need any equipment, you just get it from the Wagon and deduct the cost from its total.

If the item is an obvious thing you'd definitely have packed (basically, anything from one of the premade item packs they start characters with), it's definitely in the Wagon.

Otherwise, you can provide a justification for why you'd have definitely bought the item sometime in the past. Based on the plausibility of the excuse, I'll determine a DC, and you make an Int or Wis check. On success, your character did indeed have the foresight to purchase that, and it's in the wagon. On a failure of 5 or less, you didn't quite get what you needed, but there's something close. On a worse failure, you didn't actually pack that, and you can't retry for it until you have a chance to restock.


Jeezus, tracking mundane items is a fuckin' slog. In general the prices become utterly insignificant past 3rd level or so, so it becomes purely a game of "did someone read the equipment chapter and just transcribe a bunch of it to their character sheet". Just assume people have what they need, with a little bit of game-ness to make it fun and reasonable.

Fast And Slow Initiative

Described in more detail in another blog post, but in general, rather than rolling initiative and establishing a battle order for the rest of the combat, each round players decide whether they're going "fast" or "slow". All the fast players take their turn, in whatever order they work out amongst themselves, then all the fast monsters, then the slow players, then the slow monsters. Next round you make the fast/slow choice again.

Going fast is a normal round. Going slow lets you impose advantage or disadvantage to a single roll that anyone makes during your turn (as you have taken some time to watch the unfolding situation and take a more optimal action). If you have initiative bonuses from some feature, the linked blogpost describes how to translate that into fast/slow bonuses.


Already explained in the blog post. Initiative is just a fuckin' slog, man. Fast/slow is fast, dynamic, and encourages strategy and paying attention.

Resting Is Harder

Short rests are left as they are.

Long rests now restore all Stamina (see next section for Stamina/Health details), regain one hit die, recharge anything that recharges on short rest, and recharges one ability that would normally recharge on a long rest. Spellcasters can't choose "regain all my spell slots", but they can choose to regain slots worth a number of levels equal to half their caster level (like the Wizard's Arcane Recovery feature).

A new Rest downtime activity (spend ~a week resting or doing light activity; can be combined with other downtime activities if they're not physically stressful) restores all Health and Stamina, all hit dice, and recharges all abilities that would restore on short or long rest, including spell slots.


The D&D overall ability economy, balancing classes focusing on constant and short-rest abilities (like the Fighter, Monk, and Warlock) against classes focusing on long-rest abilities (like the Barbarian, or most casters), is predicated on the assumption of 3-5 encounters between long rests, with a short rest every 1-2 encounters. This is intended to allow short-rest classes to exhaust their relatively small resource pool in approximately every combat, while long-rest classes have to ration themselves across several battles.

In practice, however, in the ~20 years I've been playing D&D, this is almost never the case. Instead, it's almost always 1-2 encounters per day; or when it looks like it'll be more, the players usually contrive to long-rest in the middle. This ends up unbalancing the classes in a frustrating way, giving casters especially more power than intended.

Splitting rests into three categories as shown should let me continue to play D&D as I always have, while bringing long-rest classes back into reasonable balance with the other classes. This does rely on inserting downtime potential between distinct "adventures", but that's something a DM should be doing anyway; downtime is fun, and helps alleviate the "peasants to gods in 30 days" leveling-speed dynamic that can accidentally happen otherwise. I like designing explicit "missions" into the structure of my game anyway, so it should slot in nicely.

I am going to be playing with the exact balance of the "recharge one Long Rest ability" thing, especially for casters, so don't take that as set in stone currently.

Health/Stamina Instead Of HP

Rather than a single pool of HP, players have separate pools of Health and Stamina. Stamina is lost first when a player takes damage; when it's all gone, excess damage goes to Health. Players are unconscious/dying only when both their Health and Stamina reach 0.

Stamina represents your ability to turn attacks aside at the last moment, or suffer only bruises or scratches, etc. These are things that, with a breather, you can recover from and get back to fighting fit. Health is your literal physical health; losing it means you're actually taking injuries.

All healing effects - spells, rests, etc - restore Stamina only. There is no way to recover Health while out adventuring (normally); it can only be restored by bedrest (the Rest downtime activity from the previous section).

At first level, if a player has a 1dX hit die, they now have 4 Health and (X-4) Stamina. At later levels, they gain 1d4 Health, and a flat (X-4) Stamina. Any other effects that raise max HP (Con bonus, feats, etc) raise Stamina.


D&D's binary health system, where you fight at 100% full strength from max HP to 1 HP, then immediately fall to the ground and start dying at 0, has always been silly. It also means that, sometimes, the most efficient move is to let a player that's almost out of HP tank a big hit and drop unconscious, then heal them up a tiny bit to get them back fighting. That's ridiculous!

I've always liked the idea of systems representing graded damage levels, but they've all been bad - either they're too fiddly and require constant adjustment of numbers, or they cause death spirals when things start to go bad, or both.

This is an attempt to give a tiny bit of the feeling of graded damage, without significantly affecting balance, particularly within a battle. As long as you stay fairly topped up in HP, there's no change. If you get down to your last few HP, nothing changes stat-wise, but after the combat's over and you heal back up, those HP stay lost until the adventure's over and you can heal up properly. So there's incentive both to keep yourself topped up when possible, and to break between adventures to rest and heal.

Note that Health is intentionally meant to be a relatively small fraction of your overall HP, especially for front-line fighters with a d10 or d12 hit die and good Con. (A 10 Con Wizard will have about half their total HP as Health, but a 14 Con Barbarian will only have about 1/6 of their total as Health. The Barb can take a lot of beating before they actually suffer an injury that'll stick around.) Also, especially for large hit-die classes, Stamina by itself is equal or larger than HP normally would be, so it shouldn't even hurt them balance-wise anyway; if you play exactly as you would with normal HP, you'll stay in Stamina anyway and never suffer a wound.

Finally, this allows you to still reasonably roll your hit die to determine your HP growth as you level, which some people really enjoy, without allowing someone to get absolutely crippled by a low roll, or even a few low rolls in a row! The diff between min and max roll is just 3 Health each time, which is a fairly small part of your total.

Handling Time in Base 6

Last updated:

In previous posts (here and here) I lay out arguments for why base 6 (heximal) is superior to base 10 (decimal) or any other base, due to its numerical properties.

Arithmetic is all well and good, but I think heximal actually has some great arguments for its superiority in the real world, too. Let's go over some of them.

"Decimal" Time Kinda Sucks

We already don't really use decimal for time; we use a bastardized mostly-base-60 system: 60 seconds makes 1 minute, 60 minutes makes 1 hour, and then (breaking the pattern!), 24 hours makes 1 day. Like the Babylonians did in their time, we write this using alternating base-6 and base-10: the 1s digit cycles thru all ten values 0-9, while the tens digit only cycles thru the six values 0-5.

All this adds up to a lot of confusion for children first learning how to read time, and persistent confusion thru adulthood for people needing to do time math; it's not unusual for someone, at first glance, to read a timer set to 1:20 as "120 seconds left", when it's actually 80 seconds. Or take movies, which usually have their runtimes reported in minutes - how long is a 132 minute movie? (2h 12m, but that takes a moment of thinking to calculate.)

That 60/24 inconsistency also contributes to more time confusion in the form of clock faces generally being labeled 1-12, with children having to memorize that "3" only means 3 for the hour hand; it means 15 for the minute or second hand.

How Does Heximal Help?

It turns out that we can avoid all that by switching to heximal time! Let's go over the details.

First, the scale. We can use a nice, simple 100₆:1 ratio for all three time units: 100₆ (36⏨) hours to the day, 100₆ (36⏨) minutes to the hour, and 100₆ (36⏨) seconds to the minute. This gives us time periods very close to decimal time: the hex hour is 40 dec minutes, a little shorter than the dec hour but still able to serve a similar purpose as "a large unit of time"; by a lucky coincidence the hex minute is almost exactly a decimal minute (about 1m4s in dec); and the hex second is just under two dec seconds, still fairly reasonable to use for counting off moments. (Bonus: 1/10₆ of a hex second is 1/3 of a dec second, which is still actually countable by humans, unlike 1/10⏨ of a dec second.)

More importantly, time math is now trivial. Quick, what's 250 seconds in minutes? In hex, it's 2m50s; in decimal it's [does some quick math] 4m10s. Scale that up to hours, too: 3 hours 10 minutes is 310₆ minutes or 3,1000₆ seconds in hex.

And if you're using heximal numbering in general, it meshes trivially into that. I recently saw someone struggling to convert "1 hour 2 minutes" into a decimal number of hours, because dealing with fractions of 60 isn't easy in decimal unless you're hitting one of the convenient numbers like "15" or "20". (For the record, it's approximately 1.0333⏨ hours; you can't write it exactly because it's a repeating decimal.) In heximal, 1h2m is 1.02₆ hours, easy-peasy.

All this means that children, when first learning time, will no longer struggle with the inconsistencies of base-10 numbering with base-60/base-24 time. Counting and time all work the same exact way, mutually reinforcing each other in learning. And this carries over to adulthood, making time math much simpler overall.

A Heximal Clock

Interestingly, a heximal clock would feel pretty similar. Minutes and seconds are already counted 00-59⏨; in hex they're 00-55₆, and your intuitions work the same. For example, "half past" is :30 in both hex and dec time. It's only the hour that would significantly change, from either a 1-12⏨ double count (in the US) or a 0-23⏨ count (elsewhere) to a 0-55₆ count in hex.

Actually rendering a hex clock is an interesting challenge. Due to the aforementioned minute/second closeness, the minute and second hands of a hex clock can work identically, going once around the circle for each hour/minute. It's probably not reasonable to do the same for hours, however, because of the loss of precision - going from 12 hours per revolution on our current clocks to 36 hours per revolution makes it much harder to tell exactly what hour it is. It's not very important whether you can tell at quick glance whether it's :11 or :12 past the hour, but it's very important whether your alarm clock is showing the hour itself as 11₆ or 12₆; one is 7:20am in decimal time, the other is 8am, and the difference can be whether you're late to work or not!

There's a few possible ways to resolve this, but the one I think I prefer overall is to have two hour hands, one pointing to the tens digit and the other pointing to the ones digit. I've created a live example of this at https://xanthir.com/hex/clock/ that you can check out. Reading it is almost identical to reading a normal clock; you just have to take into account the pair of hour hands, instead of reading a single hand and remembering which half of the day you're in.

I suspect that it'll be useful to give a name to the values of the "slow" hour hand, what one full rotation of the "fast" hand is, if for nothing else so you can refer to that hand without having to say "fast hour" vs "slow hour". I suggest "span" for this unit, one sixth of a day, so you have the span hand and the hour hand. This is a reasonably useful period of time anyway: we already informally divide up days into 8-hours units for sleep/work/else, so each of those would be two spans. A half-day at work would be one span, etc.

Heximal Dates

We can take this nice system a little further, into dates. The year is 365⏨ days, remarkably close to 36⏨×10⏨; in hex that's 100₆×14₆ or 1400₆ days (exactly 1405₆).

First, if we're using heximal, clearly we want to use a six-day week; the seven-day week is a weird artifact of Babylonian astrology (based on the seven moving heavenly bodies they could see). That means the year is 140₆ weeks, with 5 days left over.

(This has some knock-on benefits; sticking with a 2-day weekend means a 4-day workweek, which is honestly better for humans, but not a huge change in overall working days. (It's definitely not a 20% reduction, just ~6.5% reduction, from ~260 working days to ~244.))

(Tangent: a six day week means we have to drop a day. Which one? Maybe Wednesday, to keep the symmetry of a SMTTFS week. Or maybe Tuesday or Thursday, so the work-week has unique starting letters for its days, MWTF. While we're here, Sun/Mon/Sat are all still named after those original heavenly bodies; maybe we could go back to that with the other three? Skipping Mercury because it's hard to see anyway, swap Wednesday for Vensday (Venus), Thursday for Marsday, and Friday for Joday (Jovian). Hey, if it's good enough for the French...)

(Another possibility if you wanna really move into new space is to draw from my base-6 pronunciation system, naming the weeks by the digit. So the week would go Beday, Tiday, Doday, Kuday, Grday, Paday, naming each day after its 1s-digit. This also gives us distinct letters for each day - BTDKGP - which is just a nice improvement over our current Su/Sa and Tu/Th pairs.)

With that down, we've got some choices. We could stick close to the existing calendar, and do a dozen (20₆) months in a year, each with 50₆ (30⏨) days. That's not too bad, but we're so close to even rounder numbers: we can alternately go with a six-week month (100₆ or 36⏨ days), then we have ten (14₆) months in the year.

This feels really good - 100₆ seconds in a minute, 100₆ minutes in an hour, 100₆ hours in a day, and 100₆ days in a month. The perfect scale-up only breaks when you finally reach a whole year, and even then, ten isn't a bad number in heximal. (Certainly no worse than twelve is in decimal.)

This gives us some beautiful day numbering, too - each month starts on Sunday the 1st, and subsequent Sundays are the 11th, 21st, 31st, etc.

(Since we only need ten month names, I presume we'd drop July/August as the most recently-altered month names, making Sept-Dec's 7-10-derived names make sense again.)

Years Aren't 360 Days Tho

"But Tab!" I hear you cry, "The year isn't 360 days, it's 365! You just dropped those last five days!" You're right, we have to deal with those 5 (6 on leap years) days. I think there's only two reasonable possibilities.

The first possibility, and the one I went with in my calendar, is to just put the extra days at the end of December. December just has seven weeks, 105₆ days, with that last week having five days (six on leap years). I presume that last week would be considered to have three working days, and maintain its two weekends on either end, as a nice end-of-year treat built into the calendar. (Except on leap years, where it's a normal 4-day workweek. Or maybe 3 day Leap New Year weekend?!?)

This breaks symmetry with the rest of the months, but that symmetry has to break somewhere anyway, and putting it at the very end gives the smallest disruption. In particular, it means that date math stays trivial as long as the two dates are part of the same year - the 2nd of March and the 15th of June are obviously 313₆ days apart, because 2₆ and 15₆ are 13₆ apart and March (3rd month) and June (6th month) are 3 months, or 300₆ days, apart.

Date math gets a little more complicated anyway when you cross the year boundary (since there are 14₆ months, not a round number), so loading up that transition point with all the complexity is nice, rather than spreading it evenly thruout the year and making every bit of date math complicated, like in our current Gregorian calendar.

This does mean that some financial things are slightly more difficult than they have to be, but still easier overall than in our current calendar. Businesses track their finances by "quarters" currently, which are roughly three months long, but can't be exactly three months (Jan 1 - March 31, etc) because that would give each a different number of days, which would make the numbers hard to compare. It also would give each quarter slightly different numbers of weekdays and weekends, which further wrinkles most financial things. In the heximal calendar, if you either track by quarters (2.5 months each) or by quints (2 months each), every period is identical in length and weekday/weekend distribution, except for the last; it's just slightly longer and so needs some adjustment (but also includes the holiday seasons, and so needs special care anyway). So again, offloading all of the necessary calendar asymmetry to the very end makes things much simpler overall.

Another Possibility

Another interesting possibility comes from my friend Tantek, with his NewCalendar project, a proposal to regularize the existing calendar with minimal disruption into 12⏨ 30⏨-day months, each of six 5-day weeks. He deals with the leftover days by distributing them thruout the year - every second month has an extra day at the end. It's technically outside the week/month system, to avoid disrupting the day numberings, but it basically just means that the months alternate between 30⏨/31⏨ days. (December is the exception, with 30⏨ days in a normal year, and only getting its 31⏨st on leap years.)

We could adopt the same, giving every second month an additional intercalary day ("intercalary" = not technically part of the calendar, so month/week numbering isn't interrupted). Because we're starting from ten months, the pattern for a normal year is kept absolutely; it's a perfect 100₆/101₆ alternation. In leap years the leap day goes at the end, giving the tenth month 102₆ days.

I like this solution because it keeps the year more regular overall. Every 200₆ days there's a single bonus day, making each "quint" of the year exactly 201₆ days long (the final one is 202₆ days on a leap year, an unavoidable complication). This is slightly better for corporate finance than my chosen solution. It also minimizes disruption to the overall week - every two months you just have a three-day weekend, easy-peasy. (It does weight the workday/weekend ratio slightly further toward weekends, tho.)

The big downside of this is that it breaks nice date math - the distance between the 2nd of one month and the 2nd of the next is either 100₆ or 101₆, depending on which month you started from. Ordinary people would have to worry about off-by-one errors all the time when doing mental date arithmetic. And this doesn't just affect mental math; anything based on weekly schedules has to account for every dozenth week effectively having seven days - medication, work schedules, etc.

Overall I think my chosen solution, adding a week to the end of the year, is the best overall. Minimizing disruption to weekly schedules seems slightly more valuable than keeping quints regular.

https://xanthir.com/hex/calendar/ is a live calendar showing off this design. (I didn't add the ability to display additional years, as they look exactly identical save for December's last week.)

Next Time

Next, I overthink the other numeric systems in our lives, and argue why they'd be better in heximal.

Pronouncing Base 6 Numbers

Last updated:

What's the best way to pronounce heximal numbers?

One could just read them out like they're decimal: "21" being pronounced "twenty one", etc. But that leads to some confusion when mixing heximal and decimal numbers in conversation, and more generally just confuses people who are currently used to only using decimal numbers. It also makes phrases like "base ten" confusing/ambiguous - which base is that 10 in???

Instead I'll propose two simple possibilities, both of which I like for different reasons. One sticks close to decimal while remaining distinguishable; the other is much more foreign but has fun and interesting numerical and syntactic qualities.

How To Pronounce It Like Decimal

(Several aspects of this are inspired by jan Misali's method, but I don't like all the details of their proposal.)

All the individual digits are pronounced normally, as in decimal English: zero, one, two, three, four, five.

All the "teens" (two-digit numbers with a 1 in the higher digit) are also pronounced like in decimal English: 10 is "six", 11 is "seven", 12 is "eight", 13 is "nine", 14 is "ten", and 15 is "eleven".

Higher numbers are pronounced akin to how decimal does it, just with a different suffix. Rather than appending -ty, append -sy: 20 is "twosy", 21 is "twosy one", 32 is "threesy two", etc with "foursy" and "fivesy". (Note: English phonotactics dictates that all of these S's become voiced, pronouncing as "z".)

After two digits, use "quat" to indicate the third digit: 123 is "one quat twosy three".

Always group quats into two digits: 1234 is "eight quat threesy four".

Groups of four digits then form a "gran" (short for "grand quat"): 10000 is "one gran", 23451 is "two gran, threesy four quat, fivesy one".

And then finally, groups of six digits form a "kilo". This, finally is the base of the greater number system that we'll extend from here; we reuse plain numbers, -sy numbers, quats, and grans within the larger kilo group. So "200 000000" "two quat kilo"; "12345 000000" is "approximately one gran kilo", etc.

Every group of six past that gets named using the standard SI prefixes: 20 digits is "mega", 30 is "giga", 40 is "tera", etc. I presume we'd have some latin cognates to continue to draw on for very large numbers, like in decimal, which similarly are never actually used, so I'm not going to care about them.


Keeping the single digits same as in decimal is obvious; all bases do that already.

Pronouncing 10₆ as "six" isn't too unusual, from what I understand of other base-pronunciation schemes. Having a unique word for your 10 value helps in talking about it, so you don't constantly have to mutter "base six" after every mention of "ten".

For the rest of the 1X values, continuing to use the decimal names makes them simple and easy to remember. Also, the 1X's don't yet have the ability to do the unifying suffix pattern that the higher values do (which I'll get to in a sec), so they've gotta be weird somehow anyway; this is why decimal has the unique "X-teen" variant (shortened from "X and ten"). As a bonus, decimal has unique non-systematic words for all the values we need; it doesn't start systematizing them (which would feel weird carrying over into heximal) until thirteen.

For 2X and after, I use a naming scheme distinguishable from but obviously inspired by decimal. 20⏨ in decimal was originally "two tens"; English shortened the "tens" to a -ty suffix (and lightly modifies "two" and "three" to sound better with the suffix). If we follow the same pattern in heximal, 20₆ is "two sixes", shortening to "twosy".

An accidental nice feature of this over decimal is that it lacks the "thirteen/thirty"/etc confusion that decimal has; a final "n" is hard to hear in some circumstances. In heximal, "nine" and "thirty" are totally different-sounding.

For higher values, "quat" was chosen because (a) it sounds good and unique, not easily confusable with any other numbers, and (b) it's a shortening of "quarter gross", because 100₆ is indeed one quarter of 144⏨.

After that we come to a decision point. Do we start the googlology (naming of large numbers) with 4-digit groupings, because 6⁴ (1296⏨) ≈ 10³ (1000⏨)? Or do we go for the rounder-in-heximal 6-digit grouping, so your first grouping is at 1010 (in heximal), the next at 1020, etc?

For now, I lean toward the rounder-in-heximal solution. It's a bit larger (six heximal digits counts up to about 50,000⏨), but that also means that it's a large enough number you won't actually hit it in normal usage. And 50k isn't unusably large, anyway; overall I think it's still quite usable, and the benefit of extremely round googlology is quite nice.

So I needed a name for four digits. I chose "quat" for two digits because 62 is a "quarter gross", referencing dozenal; 64 is three quarters of a "grand gross" (123), so I continued the analogy with a "grand quat", shortened to "gran".

Then we finally get to the googlology point, where we start naming much larger groups and just repeatedly reuse the preceding digit groupings. Using decimal's thousand/million/billion etc is a bit misleading (the values are pretty different) and would feel weirdly out-of-place (I'm using different names for everything else). Plus I've never liked their naming, at least in the short scale the US and most of the world now uses, where "million" (referring to "one") is 103×2, "billion" (referring to "two") is 103×3, etc. (In the long scale, at least, a million is 106×1, a billion is 106×2, etc, which makes sense.)

So I figured, let's just use the metric system's naming. It's both familiar and slightly foreign, and means that when you actually use the heximal metric system, it all just works automatically.

The only downside of this is that it leaves six digits in a row without a separator, which is slightly longer than I feel comfortable with. Putting one between each pair of digits seems a little excessive, but between each triple of digits breaks up the grouping in an unnatural way. I may still decide to use a lesser separator, like spaces between each pair, I dunno.

Pronouncing Digit Pairs Specially Instead

(This system was suggested to me by @berenryan, apparently cribbed from their old notes talking to fellow conlang nerds.)

The previous method has the nice benefit of being reasonably familiar; it requires a minimum of teaching (just teaching what "quat", "kilo", and "misson"/etc mean) and you can even skip that and just read out digit strings.

However, it just inherits the English naming system with minimal tweaks. If you're willing to get a little weird and deal with the fact that nobody will understand your numbers (but have the satisfaction that in a theoretical world where everyone learned it as kids, it would be better than the first method), there are some much better possibilities.

First, the digits. 0 is "pa" (/pɑ/ like in "papa"), 1 is "be" (/be/ like "bay"), 2 is "ti" (/ti/ like "tea"), 3 is "do" (/do/ like "d'oh!"), 4 is "ku" (/ku/ like "coup"), and 5 is "gr" (/gɹ/ like "grrrr" but not drawn out). Note that all of the vowels are Spanish-style, not English-style.

When speaking numbers larger than a single digit, group them into pairs and pronounce each pair as follows:


(ŋ is pronounced "ng")

So the basic patterns:

  • the first letter of each digit-pair word uses the consonant from the one's digit's name: anything with a 0 ones digit starts with a "p" because 0 is "pa", etc.
  • the last letter of each digit-pair word uses the vowel from the ten's digit's name; all the 1_ values end in an "e" because 1 is "be", etc.
  • the second and third letters cycle between five vowels (a, e, i, o, u) and seven consonants (m, f, v, n, s, z, ŋ), respectively.

Larger numbers work the same as in the previous system; use "quat" after two digits, "gran" after four, etc.

So, 1,2345 is "befa gran dafi quat gufu".


This is actually a pretty brilliant setup for several reasons.

  • First, the digit names are obviously chosen to just use the Nth first/last letter; they also (aside from gr/gaza) are the first syllable of the 0_ numbers, since the second and last letters cycle thru the same vowels for the first five values.

  • Second, the sounds are well-chosen to be regular but distinguishable. The first consonants are all plosives, alternating between unvoiced and voiced; the second consonants are a collection of nasals and fricatives. Choosing consonants this way gives each word a sharp, distinguishable start that won't blend into other words, and then softens into a blending sound in the middle that carries stress well.

  • Third, the words all have significant redundancy, which helps with hearing. It's common for invented systems like this to be minimally redundant; it would have been easy to just produce two-letter words by, say, combining the first letter of the ten's digit's name and the last letter of the one's digit's name. They'd all be unique, so that technically works, right? In real conversation tho, where people might mumble, or the room might be noisy, or a radio might be crackling, distinguishing between some of those sounds can be quite difficult; this is why military jargon pronounces 5 and 9 as "fiver" and "niner", because "five" and "nine" sound remarkably similar over a low-bandwidth radio and the addition of the "er" sound forces us to emphasize the "v" versus "n" and makes them more distinct.

    In here, the first and fourth letters cover 6×6 unique combinations, for the 36 possible values, but the second and third letters cover 5×7, or 35, possible values, meaning they're also almost completely unique across the set of numbers. (Only 0₆ and 55₆, pama and gamr, share their center letters.) As well, the two sets tile their combinations in different ways, so if two sounds are kinda similar they won't show up together multiple times. If someone is shouting across the room and you're not sure if they said "pizi" or "bizi", well, only one of those is the name of a number. If you can correctly hear any two letters in the word, you can almost always tell which number it was; you've got to fuck up really bad to mishear it.

    (Of the six possible pairs of letters you could hear, three of the pairs uniquely identify a number in every instance; one (the center two letters) has a single collision, between 0₆ (pama) and 55₆ (gama); and two (the first and second letter, or the second and fourth letter) have six collisions, as each X0₆/X5₆ or 0X₆/5X₆ number collides.)

  • Fourth, it puts divisibility right into the name of the number: numbers divisible by 2 start with "p", "t", or "k"; numbers divisible by 3 start with "p" or "d"; divisible by 5 has an "a" in the second position; divisible by 7 (11₆) has an m in the third position.

    This scales above two-digit numbers, too. In decimal, you can tell if a number is divisible by 3 or 9 by adding all the digits; if the result is divisible by 3 or 9, so was the original number. In heximal this trick works for 5, and the naming system actually does half the work for you already - since the second letter tells the value of the pair mod 5, you can easily tell that, say, a four-digit number whose first pair has an "e" and second pair has an "u" (like demo kusa, 3304) is divisible by five (since they're +1 and +4 above a multiple of five, respectively). Any pair with an "a" can be skipped, since it's divisible by 5 already and won't affect the result.

    Similarly, there's a trick for divisibility by seven (11₆) - add together digit pairs, and if the result is divisible by seven, the original number was. Again, the naming system does half our work for us, since the second letter tells the value of the pair mod 7, so we can just look at those letters and quickly tell that, say, 12331 (befa dafi buzo) is divisible by 7, since "f" means it's +1 above a multiple of seven and "z" means +5, so 1+1+5 = 7!. (And it's divisible by five: e+a+u = 1+0+4 = 5!)

    (These tricks work in any base, for the value one below and one above the base. So in base 10, they're for the values 9⏨ and 11⏨.)

    So we get super-easy divisiblity by 2, 3, 5, and 7 all built into the naming system. This isn't just a party-trick, either - it's a built-in mental math check. Multiplying, say, basu (41) by kevi (24), you should get 1504, or gese kusa. You know right away that the last pair of the result must start with a "k" (because b×k, or 1×4, is 4 or k), check. Then the whole number needs to be divisible by 5 (because a×e, or 0×1, is 0), and yup, e+u is 5. Finally, it needs to be 1 more than a multiple of 7 (because s×v, or 4×2, is 8, reducing to 1), and yup, s+s is 4+4, or 1 mod 7.

    These phonic additions and multiplications would be drilled into you as a child learning arithmetic in elementary school, becoming utterly intuitive. And from them, you can tell that you answer is very likely to be correct, since you got the correct offset from multiples of 2, 3, 5, and 7.

    (In fact, a given combination of 2, 3, 5, and 7 is unique within each span of 210⏨ numbers, so if you pass those checks, you know you're either exactly right, or you're off by some multiple of 210⏨ (550₆). And 550₆ is just short of 1000₆; in other words, you'd have to be off by at least six gran to still get the checks to pass.)

  • Fifth, some studies have shown an inverse correlation between the number of syllables in the names for numbers and the amount of numbers a person can remember at once. That is, in languages where digits are shorter to say (like Chinese, where they're all single-syllable), people can remember longer numbers than in languages with longer digit names (like English, with "seven" being two-syllable and several of the other digits "full" syllables stuffed with sounds, and almost of the names for the tens digits being two or three syllables). In this system, each digit is a single syllable; all two-digit numbers are two syllables; writing out a pronounced number requires exactly twice as many letters as writing it out in digits. That's about as small as you can get things!
  • Sixth, having a dedicated and very short system for pronouncing all the two-digit values is convenient for "senary compression", the act of grouping heximal digits into pairs and treating them as units. Since base 6 is a little on the small side, this can be useful when talking about or remembering long numbers (this is the same reason octal and hexadecimal are useful, as compression methods for reading/discussing long binary numbers).