A QR Code alternative that is infinitely scale-able, open source, human readable, and compact
Published: 1/19/2021
Update: 1/28/2021
Author: NatureHacker
Maintainer: NatureHacker
License: Site License
Categories: See Footer
See Also: Digital collectible network, Chromaton disc, 3D chromaton disc
Page: (upload / browse / edit / print)
Discussion: Chromaton-Talk
Download: URL,PDF from URL


See Version 2 and also version 3 for a more up to date version.

Super important that chromaton shall never be tied to an identity. Chromaton must never be used to identify people or contain identifying information. Chromaton must never be used to surveil or categorize people like those who have or have not done something. Chromaton must always be anonymous and never tied to identity.

Chromaton is a free and open source visual code system similar to the patented QR (Quick Response) code. Chromaton was natively designed to use six colors and is human readable. Black and white are used for processing and do not constitute data. The chromaton system is infinitely scalable in a fractal way. Kilochromaton, Megachromaton, Gigachromaton, Terachromaton and more are all possible, the only limitation is the fidelity of the camera and printing/etching ability.

Chromaton "dots" can be any shape including circles or squares, hexagons are used here for placement and organization sake but any shape can be used.

Chromaton can be rotated any way desired, the processing marks will help the software to orient to count correctly. Also chromaton can be stacked together with a forward bias, or backward bias when fitting them together like puzzle pieces. Again this does not effect anything. In the following images a forward stacking bias is used.

Colors determined from complementary and primary colors [1]. Using colors introduces new potential for errors as seen here [2].

Our color wheel at the center of chromaton is not perfect for best contrast. A better version is found in megachromaton [3].


The name chromaton was originally intended for a cryptocurrency but finds a better use in data storage (which can also service cryptovalue). From the beginning the name meant the smallest unit of color. Here that fits as the chromaton is the smallest repeating unit and it contains color. Also it so happens the data storage in chromaton is similar to data storage in chromatin in DNA. This was not intended, neither the similarity of the name nor the DNA-like storage in the chromaton unit. The chromaton unit was simply designed as a hexagonal spiral with black and white to break up the data for easier processing. Even the fact that it scales infinitely was not realized until halfway through the designing.


Chromaton contains 48 base-6 digits which is 120 bits. This chromaton is the smallest repeating unit, and thus is like the "atom" of the chromaton code system. Chromaton is only 11 units long and 90 total units, which is roughly half the size of the smallest QR code; version 1 which has 21x21 or 441 units. In spite of this chromaton contains around 3/4 the data of a version 1 QR code while having only 20% of the units.[4]

The purple hexagons are the data containing units. Each purple hexagon can be one of the six colors seen in the center (the center colors used for color correction) thus giving base-6 encoding.

Chromaton reading

The data is read in a spiral starting towards the center and working outwards clockwise. This makes it easily human decodable/readable which is imperative and is not accomplished with any other QR like code.

It helps that the data in any one region is a sampling of data from across the message, so that if one area is damaged then you don't have a total loss of say the beginning of the message. Also the center of the chromaton contains no data, so it is difficult to damage the chromaton in a way that destroys most of the data, basically the outer edges would need to be destroyed all the way around the chromaton.

Check bits

Error correction in biology [5]. Easy to understand explanation of error detection and correction [6]

Bit 13 is the Error Correction delineating bit. If it has one of the 6 colors, then there is no error correction (and bit 13 is a data bit). If it is white then there is 1 bit error correction, if it is black then there is 2 bit error correction.

For 1 bit errors a minimum of 6 check bits are required for data + check bits between 31 and 63 (we have 48 data + check bits which puts us at dead center in that range) [7] [8].

For 2 bit errors; 11 check bits would be required [9].

See non-binary error correction [10] [11] [12].

To use reed solomon you would need a prime power alphabet so we would need to choose either base 4, 5, 7, or 8 instead of base-6 [13]. If we chose base 5 we would probably omit blue since it is similar to black.

Simplex codes for base-6 [14] [15] [16].

Prime candidates for check bits are 2, 4, 6, 8, 10, 12. This is ideal because there is a check bit on every chunk of data and also it makes the data bits (non check bits) follow a nice pattern of 6 on the inner ring, 12 on the mid ring, and 24 on the outer ring. It is also nice that the majority of our data is found in the outer ring, and all the check bits are in the inner ring. So it is unlikely that both are compromised.

For 2 bit error correction preferably bits 1-11 could be error correction and the 12th would be the first data hexagon.

See also Error correction code

Of course in kilo, mega, etc chromaton the error correction scales up so entire chromaton can be missing in kilochromaton for example and still be ok.

Chromaton example

Red = 0
Cyan = 1
Yellow = 2
Magenta = 3
Green = 4
Blue = 5

Here is an example chromaton that would be seen in the wild. The data it encodes is:

Native Base-6 (senary):505300514114023455100250211322031424243343234551 (48 digits)

Base-2 (binary):1110100000011010010010111101001101100001100001101000010011011010010011111011101010111111101110110011000000100111110111100011 (124 digits)

Base-10 (decimal):19282339541779226363068247068383542755 (38 digits)

Base-16 (hex):E81A4BD3618684DA4FBABFBB3027DE3 (31 digits)

Base-26:33B9OJEK8A63N9F6D7AOL9HIAH1 (27 digits)



Encryption would be done on the data before encoding into chromaton. Therefore Chromaton can be encrypted and only decrypted by the intended recipient if desired.


Dichrome contains 2 chromaton and thus has 2x48 (96 digits) base-6 or 2x120 (240 digits) bits. This is a bit less than a version 2 QR code.


Trichrome contains 3 chromaton which is 144 base-6 digits or 360 binary digits (bits). This capacity is between version 2 and 3 QR code.

It is read starting at the top and going clockwise.

Trichrome can encode for a private key which is handy for transferring cryptocollectibles [17]. It appears that base-58 keys are 51 units long. Base-6 keys should be 99 units.


Tetrachrome contains four chromaton and thus has 4x48 (192 digits) base-6 or 4x120 (480 digits) bits. This is a bit more than a version 3 QR code.


Pentachrome contains six chromaton and thus has 5x48 (240 digits) base-6 or 5x120 (600 digits) bits. This is a bit less than a version 4 QR code.

Pentachrome can encode for 2 private keys.


Hexachrome contains six chromaton and thus has 6x48 (288 digits) base-6 or 6x120 (720 digits) bits. This is as bit more than a version 4 QR code.


Chroma is 7 chromaton and thus contains 336 base-6 digits or 840 bits, roughly equivalent to a version 5 QR code.

It is read starting at the top and going clockwise, with the center the last.

Chroma can encode for 3 private keys.


Nonachrome is nine chromaton and thus has 9x48 (432) base-6 digits or 9x120 (1,080) binary digits. This is similar to a version 6 QR code.

Nonachrome can encode for 4 private keys.


Monochroma contains 12 chromaton and thus contains 12x48 (576) base-6 or 12x120 (1,400) binary bits. This is similar to a version 8 QR code.

Monochroma can encode for 5 private keys.


Dichroma contains 18 chromaton and thus contains 18x48 (864) base-6 or 18x120 (2,160) binary bits. This is similar to a version 10 QR code.

Dichroma can encode for 8 private keys.


Trichroma contains 30 chromaton and thus contains 30x48 (1,440) base-6 or 30x120 (3,600) binary bits. This is similar to a version 14 QR code.

Trichroma can encode 14 private keys.


Kilochromaton contain 48 chromaton and thus contains 2,304 base-6 digits or 5,760 bits which is comparable to a version 18 QR code. Kilochromaton contains 90x90 = 8,100 modules whereas the version 18 QR contains 89x89 or 7,921 modules. Even though the data capacity per unit has now decreased from QR code, it is expected to be much more robust and faster reading than QR as there is much more empty space in chromaton compared to QR.

The segments are numbered in the same way as chromaton. Kilochromaton can encode for 23 private keys.



Kilotrichrome contains 3 kilochromaton which is 6,912 base-6 digits or 17,712 binary bits. This is similar to a version 34 QR code.

It is read starting at the top and going clockwise. Kilotrichrome encodes 69 private keys.




Kilohexachrome contains 6 kilochromaton. This means it has 2304x6 (13,824) base-6 or 5904x6 (35,424) binary bits. This is over 50% more data than the largest QR code, version 40.

Kilohexachrome can encode up to 138 private keys.


Kilochroma contains 7 kilochromaton and thus contains 16,128 base-6 digits or 41,328 binary digits which is nearly double the data of the largest QR code; version 40.

Kilochroma can encode 161 private keys.


Kilononachrome is 9 kilochromaton and thus has 9x2304 (20,736) base-6 digits or 9x5904 (53,136) binary digits. This is more than double the largest QR code, version 40.

Kilononachrome can encode 207 private keys.


Kilomonochroma contains 12 kilochromaton and thus contains 12x2304 (27,648) base-6 or 12x5904 (70,848) binary bits. This is roughly 3x more than the biggest QR code version 40. Contains less than half the largest iQR code, version 61.

Kilomonochroma can encode 276 private keys.


Kilomonochroma contains 18 kilochromaton and thus contains 18x2304 (41,472) base-6 or 18x5904 (106,272) binary bits. This is roughly 5x more data than a version 40 QR code, the largest. Contains nearly 2/3 the data of a version 61 iQR code, the largest.

Kilodichroma can encode 415 private keys.



Megachromaton contains 48 kilochromaton and thus contains 110,592 base-6 digits or 283,392 bits which is roughly 12x the data capacity of the largest QR code; version 40. Also it is over 50% more storage than version 61 iQR code which stores 171,727 bits in 422x422 modules.

Megachromaton contains 90x90x90 units (729,000) compared to iQR which contains 422x422 units (178,084). Again the megachromaton holds 50% more data than the version 61 iQR code and likely would be read and processed even faster than the iQR.

Megachromaton can encode up to 1,107 private keys!

You may notice the center colors are ordered differently than chromaton and kilochromaton. This is an improved color scheme and should be applied to all chromaton versions to improve contrast.

Chromaton Version 2

Why version 2? Better error correction Unlike version 1 which could be stacked any way, version 2 requires a backwards stacking bias. If a forward stacking bias is needed then the white and black dots on the outer ring need to be swapped.

Again it is critical that chromaton never be tied to an identity or its use tied to an identity. Identifying information must never be contained within chromaton nor should it be used to indicate proof of an identity. Chromaton must neverbe used to discriminate between compliant people and non-compliant. Chromaton is only for fully anonymous use and content, use and content must never be tied to identity. Not even if by consent.

The grey dots function as black dots but are used for orientation (they can be white if grey is undesired). The black and white dots are used for timing and image flattening. The white dots are used for markers for reading. The reading algorithm would look at a white dot and read all the base pairs around the white dot in a clockwise fashion. Then it would find the next white dot clockwise and read all base pairs around that clockwise. It continues this in an outward spiral just like chromaton v1. Even the outer white dots are used in the same way. Notice that every base pair is read twice for redundancy...except the very corner data dots. Actually when chromaton are linked together, the next chromaton will check that corner dot as well as the dot in it's own corner. So the more chromaton linked together, the more complete the redundancy check.

Error correction

Studying error correction I realized that in the original chromaton as a senary system, this would be quite a challenge to incorporate algorithmic error correction. So Chromaton v2 was born, with the goal of physical error correction. This is physics based information theory and has never been done before to my knowledge. I discovered it studying DNA and how it has base pairs A-T and G-C that are always paired together. I realized that this gives perfect 1 bit error detection. I don't think there is error correction in DNA code, the polymerase just needs to be able to detect errors so it can fix them manually. You don't want to gloss over damaged DNA by just adding bits for error correction, that is wasteful when you want the code to be maintained perfectly for life.

Anyway I started with pairing complementary colors. I had 12 colors so with 6 pairs that gives 12 combinations. I also realized that if I limit the directions the colors could go, so for example the lightest color always goes upwards, then there are only 6 combinations. Doing this starts adding error correction ability. With this restraint, we now have 50% 1 bit error correction and 2 bit error detection. The reason this works is if we have a random color error bit, there is a 50% chance it is in the wrong spot, and if so we know it was the wrong one and can correct it. Next I figured I could improve the error correction ability more. What if I added filters to areas of the chromaton, sort of like epigenetic modifications in DNA. Filters would add another dimension to chromaton and could improve error detection. I broke the chromaton into 12 areas each with one of the unique colors applied as a light filter. Now the chances that a bad bit has the correct filter applied is 1 in 12. So now we are at 1/2 * 1/12 = 96% 1-bit error correction and 96% 2-bit error detection! This is closely approaching perfect algorithmic 1 bit error and 2 bit detection technology which typically would require 4 bits to achieve and we did it with only 2.

Allowed pair orientations

Filter regions

Chromaton v2 Numbering

The color correction bits are labeled with a "C" in front of them like "C1" and "C2". The senary data bits (including inbuilt error correction) are labeled 1-24.

24 senary (base-6) data bits means each chromaton contains 60 binary bits of data.

Machine reading

Notice there are 54 reads of 24 bits and that every double bit gets checked in full twice, and half of the double bit gets checked again for a total of 3x on each double bit. The 3 checks vote and if it gets the same read 2 out of 3 times those 2 are considered the correct read. If all 3 reads are different then it starts reading from the beginning again until there is a majority vote.

When you stack more chromaton on eachother with the proper stacking bias, the corners of the next chromaton get checked with this chromaton.

The machine goes from one white bit to the next and reads the lower left bit first and moves around clockwise checking all bits.

Higher order

Unlike v1 where any error correction can be carried out the same way on higher orders of magnitude, our color coding shortcuts cannot work on higher levels without degrading error correction performance on all levels (as far as I can design). So we will opt for the standard physical error detection and correction; redundancy (again, the same error correction that DNA uses [18]). Algorithmic data correction is weak. If one check bit of algorithmic data correction becomes corrupted, error correction for multiple data bits is compromized. If one check bit of physical data correction becomes corrupted, error correction of only 1 data bit is compromized. Therefore algorithmic always has tradeoffs.

In chromaton v2 (Cv2), in higher orders of magnitude there will be 3 of each data "bit" where one bit is a lower level chromaton. This can detect max of 2 bit errors and correct a maximum of 1 bit errors in the order of magnitude you are at. For example in kilochromaton the 3 redundant bits means you can correct 1 bit errors in kilochromaton. But what this means is this method can actually detect and correct errors of literally any size in the lower level of chromaton since it is comparing thier entire checksums. The nice thing here is this is perfect error correction instead of 96% like our first level. The tradeoff is we can hold significantly less data in this method. Instead of having 24 base-6 digits of storage like level 1, level 2 and beyond can only hold 16 digits each, but to integrity of data is astronomically high and virtually 100% perfection.

Higher order of magnitude error correction checks the "checksum" of each chromaton that is 1 order of magnitude below it and compares it between the 3 total copies of each. One way to look at single bit error correction is the 3 copies vote and majority wins. If none match, then that is considered detection of a 2 bit error. This is a little different than normal. Normally 4 copies are needed for 2 bit error detection and 1 bit correction. Bit in this case the checksum's are so big that the chances of 2 checksums matching and both were in error, are very slim. 4 bits are needed for binary data. For checksums which contain many more possibilities besides 0 and 1, only 3 bits are needed.

Therefore instead of having 100% error detection and correction rate since we are using perfect setup, since the check sum has only 72 possible outcomes (max sum would be 6x12) and the first level has 144 possible outcomes. Therefore the actual rate is just over 99% for checking level 1, and just under 99% for each subsequent level. Compound the 96% with the ~99% of each subsequent level and you have what quickly approaches perfect 1 bit error correction and 2 bit detection.

Cv2 chromaton doesn't have a perfect fractaling outwards from the base level and beyond, but neither does DNA structure. I am happy with Cv2 as a super robust error correcting design, perhaps the most practically robust ever designed by humans.


Kilochromaton holds 16×24= senary digits or 16×60=960 binary bits of data. Megachromaton is needed to achieve the highest level of what a QR code can store by storing 15,360 error free bits, and Gigachromaton more than doubles what an iQR code can do by storing 245,760 error free bits.

Kilochromaton numbering

Ignore the colors, that is just for visualization purposes.

Kilochromaton for Cv2 uses 3 redundant bits for each data bit. It uses 1 bit error correction, if checksum's of the 3 replicates don't match, then error correction is run on all 3 on the lower chromaton level. Then checksums are matched again. If 2 match and one doesn't, the ones that matched are used as the correct data. If all 3 still don't match then a 2 bit error is detected at the kilo level.

Chromaton Version 3 (Cv3)

Chromaton v3 means data perfection.

Again, chromaton is never to be used in or for identity or tied to identity in any way. Not even some egalitarian vision of identity like Tim Berners-Lee is advocating for. Chromatom must always be anonymous and free of any ties of any kind. Even consent does not make tying chromaton to an identity ok.

In version 3 we want to accomplish 2 things. Firstly we want to get rid of color filters altogether so Chromaton becomes a more versatile protocol. Secondly we need to resist burst errors so redundant data needs to be placed far apart from eachother.

The basic data structure is the same as version 2. In chromaton we had 48 unique digits that included some error correction. In chromaton v2 we had a base level of 24 digits, and subsequent levels of 16 digits. In chromaton v3 every level has 16 digits. Like in v2, the grey dots can be white and achieve the same goal if desired (if grey is too hard to encode).

Storage calculations

In terms of storage, a chromaton contains 29 bits of data. So a kilochromaton has 29×29=841 bits. Megachromaton has 24,389 bits. Gigachromaton has 707,281 bits which is 88.4 kilobytes of data. Terachromaton has 20,511,149 bits which is 2.56 megabytes of data (which can store close to this entire website). A petachromaton has 594,823,321 bits which is 74.4 megabytes of data. An exachromaton has 17,249,876,309 bits which is 2.16 gigabytes of data. A zettachromaton has 500,246,412,961 bits which is 62.5 gigabytes of data. A yottachromaton has 14507145975869 bits which is 1.8 terabytes of data. And in my mind that will be about the limit of practical 2D chromaton. See 3D chromaton disc for larger storages.

Byte calculations

Assuming an 11cm chromaton disk chromaton would have 1cm wide hexagons. Kilochromaton would have 0.0909cm. Megachromaton is 0.008cm, or 80 microns which is larger than a pixel of a 4k screen of the size of the megachromaton since 4k is 8 megapixel, it should fit on any wqhd screen. Gigachromaton is 0.00075cm which is 7.5 micron, which would require a 30k screen or roughly 450 megapixels. Terachromaton is 680nm (size of a DVD pit [19]). Petachromaton is 62nm. Exachromaton is 5.6nm. So a CD size chromaton could potentially hold up to a couple gigabytes of data. Not bad. Especially when you consider data stored as chromaton is perfect data.

If we started with 110cm chromaton sort of the size of very large book pages or posters a chromaton would have 10 cm pixels. Kilochromaton 0.909cm. Megachromaton 0.083cm. Gigachromaton 0.0075cm. Terachromaton 0.00068cm. Pentachromaton 620nm (size of a dvd pit). Exachromaton 62nm. Zettachromaton is 5.6nm which is probably the limit for the near future. This means you could have a (very expensive) book that holds 62.5 gigabytes of data per page and have flawless error correction.

Private key calculations

A private key is 256 bits. In the digital collectible network, private keys might be valued around $0.50 in 2021 dollars.

Kilochromaton: 3 private keys, $1.50. Very practical.

Megachromaton: 95 private keys, $47.50. Quite practical with 4k screen display of the chromaton.

Gigachromaton: 2,762 private keys, $1381.00. Somewhat practical, this will probably be within the range of consumer displays and cameras in 10-20 years as it requires around 450 megapixel or 30k resolution. This is well within the range of CD-like resolution so gigachromaton disks could be practical today.

Terachromaton: 80,121 private keys, $40,060.50. Possibly practical, this is in the realm of chromaton on specialized disks with color centers about the size of a DVD pit.

Version 3 numbering

This applies to all levels of Cv3; base, kilo, mega, giga, etc. So in Cv3 we achieve full fractal again.

The colors here denote a certain shape that the color set (triad) can take, thus there are 4 shapes (green, orange, light blue, red)

The numbers represent the shape redundant data takes. So each "1" is a replicate of the same data (in kilochromaton and greater it is the exact same data, but in base chromaton it represents a unique color combination triad, which all represent the same number as well). And same for "2" and so on. So version 3 chromaton can have 16 digits of base-4 numbers. So each of these numbers can be 0,1,2 or 3. Red-green-blue is 0. Purple-orange-bluegreen is 1. Yellow-cyan-magenta is 2. lightblue-yellowgreen-redmagenta is 3.

Error correction

To get up to speed with probability calculations you will need to learn all these concepts found here [20].

To get rid of the color filters in Cv2, we need to use 3-color triads instead of 2-color pairs. We will also force orientation in certain ways so there are 12 colors and only base-4. We are giving up 8 bases (2/3rds) in order to have robust error detection and correction. This means that each color is only in a set of 3 and must maintain a certain orientation. These methods, like in Cv2, are part of physical information theory (PIT) or physical error correction (PEC) which is in contrast to algorithmic error correction (AEC) invented by Hamming. PEC uses physical properties of data to detect and/or correct and/or prevent errors. Some of these properties, as also explained in Cv2, can be replicates, recombination, location, orientation, partnering, tagging, keying, contrast, etc. Physical error correction is the methodology most used in nature and can be found in DNA, visual field, neurons (such as memory and recall); and other data storage, transmission, and processing. If PEC is bieng used exclusively over AEC, then the only algorithms used would be in the reading and decoding, not in the encoding. Only physical factors are used for encoding in purely PEC. Of course algorithms can be used to choose or dictate how/when PEC is used based on the data used.

As will be shown below, the Cv3 PEC system gives us 100% detection and correction of 1-bit errors, 98% detection and correction of 2-bit errors, and 30% detection of 3-bit errors. These numbers increase astronomically when kilochromaton or higher are employed. In kilochromaton most errors up to 48 bits will be corrected!

1-bit error

We will be able to correct every 1-bit error and only falsely correct (3/12)*(1/12)= 2.1% of 2-bit errors without detection because we diagnosed them as 1-bit errors wrongly. This is because the chance that an error color is in an allowable spot is 1/3 (which is 4/12) but can't be the correct color (so subtract 1/12 from 4/12 and get 3/12) and the chance the last spot has the perfect color to go with the last error color, is 1/12. This way the correct color actually seems wrong and the error colors seem right.

The chance that a 3-bit error is diagnosed wrongly as a 1-bit error is 10.9% as seen in the below calculations.

2-bit error

For that 97.9% of 2-bit errors we were able to detect, we can also correct them all! Just as long as one bit was in an allowable spot and the other 2 were not, then we correct the ones that were not, with the other colors in the triad of the one color that was allowable. We still record this as a 2-bit error though, because the chance we corrected it wrongly is quite high, since as seen below, the chance that a 3-bit error goes undetected is over 70%. Many of these undetected 3-bit errors will look like 2-bit errors. It turns out 59.2% of 3-bit errors actually look like 2-bit errors and get wrongly diagnosed and corrected, see below for calculations.

3-bit error

See probability of "at least one" [21].

When all 3 colors in a triad are unallowable, this is a detectable 3-bit error. Because of this we can detect some 3-bit errors.

To determine the chance we will need to calculate the chance that at least one color is in an allowable position. The chance a color error bit is in an allowable position is 1/3. So the chance that at least one color is in one of the allowable positions is 1-(chance none are in allowable positions) so 1-(2/3)*(2/3)*(2/3) = 70.4%. This means that in a 3-bit error, the chance that at least one color is in an allowable position is 70%. So since we need all colors to be in an unallowable position, this means that we can only detect 30% of 3-bit errors.

Having 3 colors all in unallowable positions is nonsense to a computer. We cannot have a nonsense bit like this so we have to correct it, even though the chance of correcting it wrongly are extremely high. To "correct" it and make it into a sensical bit (triad) we first look to see what colors the nonsensical triad contains. If it contains all the colors of a sensical triad, just in the wrong locations, or if it contains the same color 2 times in the wrong spots we choose to correct it to that triad that contains that color bit. Also if it contains 2 colors of a certain triad in the wrong locations we correct it to that triad. If it contains 3 different colors all of different triads, at least that removes one of the 4 possible triads. To select which triad to correct it to out of these 3, we now have a simple solution, correct it to the triad that gives the middle value. Since all 4 triads are numbered 0-3, and all 3 triads are different in this case, one will have a value between the other 2. We choose this one since it will effect the checksum of the chromaton the least.

The chance a 3-bit error is undetected and looks like a 2-bit error or 1-bit error or no error is 70.4%, since at least one needs to be in an allowable position. Using the below calculation, the chance of it looking like a 2-bit error exactly, is 70.4-11.2 = 59.2% chance.

The chance a 3-bit error is undetected and looks like a 1-bit error or no error is 0.704*(1-(11/12)*(11/12)) = 11.2%. This means that there is a 70.4% chance of at least one spot having an allowable color and then at least one of the remaining spots having the exact right color, a 1/12 chance. So 11.2% of 3-bit errors look like at least 2 of the colors are in the right spot. Using the below calculation, the chance a 3-bit error looks like a 1-bit error exactly, that 2 of the colors are correct and 1 is wrong is 11.2 - 0.23 = 10.97% chance, see the calculation below for how we got the 0.23.

The chance a 3-bit error is undetected and looks like no error at all is (1/3)×(1/12)×(1/12) or 0.23% chance.


We have a 97.9% 2-bit error detection and correction rate and 100% 1-bit error detection and correction rate. This is excellent, triads of Cv3 when compared to the pairs of Cv2, Cv2 only had 50% 2-bit error detection (without filters) whereas with Cv3 and 3 bits, we get 97.9% 2-bit error detection. This is more than enough especially when using kilochromaton and higher as it will correct even more errors. 2-bit errors are still recorded because of the small chance it was corrected wrongly.

That 30% chance when we diagnose a 3-bit error correctly, we will still "correct" it wrongly but we will make a note that it is a 3-bit error [22]. This is because we do not know what the correct value is supposed to be so we have to make it something. It would be nice if we could keep it and compare each color of each triad with the other replicate chromaton at the kilo- level, but unfortunatly we don't record a value for each color, only for each triad. So if we can't get consensus within the triad, we have to correct it to a wrong value and record it as an error. The good news is at the kilo- level, if the other 2 chromaton don't have an error recorded here, their data will take precedence over our erroneous data. Also see kilochromaton error correction.

Version 3 combinations

The colors these were circled with match the colors above in the numbering picture.

These were figured out using the below color wheel to get colors in the same possible position spaced out as far as possible on the color wheel. This is an example of the PEC called "contrast".

Kilochromaton v3

The basic data structure of Cv3 is the same as Cv2. In version 3 kilochromaton, three copies of each chromaton are used. The way the data is organized the same as base cv3.

Kilo error correction

The farther the error correction on this level makes it, the less severe of an error. The lower the error number, the more severe the error. So an error at step 1 is more severe than an error at step 5 for example. This will help us in megachromaton error correction.

1. Sum

Kilochromaton (and higher) gives us another check of the lower chromaton we are reading. At this level we use "sum" of the lower level. So first we decode and error correct all base level chromaton. Then we sum up all the numbers contained in each chromaton and this is the sum, one for each chromaton. In kilochromaton level we compare the three sums for each replicate chromaton. If all 3 are the same then we verified that everything is perfect (we have 16 base-4 numbers so the chance that we randomly got the sums to equal yet actually be wrong is 1/48 × 1/48 × 1/48 = 9×10^(-6) or 9 times in 1 million). But for 2 of them to randomly give the same sum wrongly is 1/48 * (1-(47/48)*(47/48)) = 0.086% or 859 times in a million. So since we will accept if 2 of them add to the same sum, we will have a % correct - error correction rate. This not only corrects 1-bit or 2-bit errors at this level, this corrects up to 48-bit errors! An entire base chromaton could be wrong and it could be fixed at this level. If 2 or 3 replicates have the same sum, go to this step next. If not, go to the below step.

All different

If all 3 of the sums are different, what do we do? Firstly I want to say that all 3 being different will be extremely rare since we already have perfect 1-bit error correction and roughly 98% 2-bit error detection at the base level. But when it does rarely happen we can do something else so we don't loose all the data in the base chromaton just because of a couple errors. What we will do is take the 2 chromaton with the fewest detected errors (or the least serious errors, 3-bit error more serious than 2-bit). If there is a 3-way tie, favor the 2 chromaton with fewest/less serious errors and most similar sums, if still a 3-way tie then compare and correct all 3 at the same time at the base chromaton triad level. Anything that is different between the 2 (or 3), we check to see if there were any errors detected previously in those spots. If in one of the chromaton one triad was detected as an error and the other chromaton does not have an error detected in that triad, then the error triad is replaced with the non-error triad. This is the PEC technique of error recombination. After all of this what we will be left with is 2 chromaton (or 3) that are either now identical or only vary in one of two ways. The first way they can vary is if both have different errors in the same triad. The second way is they both have different values in the same triad and neither was detected as an error. In both of these cases the data from the third chromaton is used to fix these, unless the third chromaton has worse errors in those spots (3-bit error) in which case just use the triad from the chromaton in the first position, that is the chromaton nearest the upper left of the kilochromaton. Even if the loser chromaton also has a 2-bit error in the same spot as a 2-bit error in the 2 winners, use the loser chromaton triad so there is convergence. In the case that the 3rd loser chromaton has an 2-bit error in the triad where the 2 winner chromaton have no errors but different values, then use the 2-bit error. The reason for this is 98% of 2-bit errors will have been corrected correctly, but if no errors were detected but both winners have a different triad, the chance that one of those is right is less than 50%. In the case the 3rd loser chromaton has a 3-bit error in a triad where the 2 winner chromaton have no errors but different values, choose one of the winner chromaton's triad. Just choose the triad from the chromaton in the first spot, that is the spot closest to the upper left of the kilochromaton. Now the 2 chromaton that were being compared (or 3 if still all tied) are as good as we can get them in this step. If you choose a winner here, if one chromaton now has the least amount of errors/least serious errors, then report a soft error of [#1]. This is the most serious soft error in the kilochromaton level. If there is no winner and we now have 2 chromaton with the same number/severity of errors, report a soft error of [#1] and bring these two to step 3 (skipping step 2 since we already did it), and discard the loser chromaton. If there are 3 chromaton with the same amount/severity of errors and the sums the same distance apart, report soft error of [#1] and bring all three to step 3.

Two or three same

If 2 or more agree on the sum without performing the "all different" protocol above, then this is great; if the sums equal then the overwhelming chance is the chromaton are in fact the same. However we still have to decide which one to correct it to! We can't just keep all the chromaton since they are replicates at this level. One idea would be to choose one randomly. The reason we won't do this is 2-fold. Firstly it would take a lot of processing power to run a pseudorandom algorithm every time we needed to make a decision. Another reason is random algorithms can be cracked and a malicious attacker could know ahead of time which one you will pick and insert a malicious chromaton in the position that he knows will beat the detection. So we need to use actual intelligent decisions so we are all on the same page. The following techniques will go from fast and easy to slower and more complicated. If the fast and simple methods can converge us on an answer then it will save us time and give us soft errors that will tell us how close our data is to perfect, and if not then we go to the more expensive techniques. See history of error correction for more info on the following checks [23].

If two or three of the replicates have the same sum, we go to the next step, step 2, with all the chromaton replicates, even if one doesn't have the same sum. We will get rid of the one without the same sum in step 2 after we use it for recombination.

2. Error recombination

In this step we pick the one with the least amount of errors (and/or least severe errors; since 3-bit errors are more serious than 2-bit) reported in the original error correction steps to use as the "one correct version" ("winner").

If only two replicates from the previous step have the same sum:

We recombine the errors between the two replicates that had the same sum. To do this we look at each triad with an error, and see if the other replicate does not have an error in that spot. If not, then replace the error triad with the non-error triad. Also we use the replicate with the different sum, the looser from step 1, and if this has an error-free triad that the winners need, it is substituted into the winners.

The priority is this. All else bieng equal favor triads from the winners. If the winners have different values for a triad so they are not matching but niether contained an error, then substitute the triad from the third chromaton unless it is a 3-bit error. If it is a 3-bit error then take whatever triad was from one of the winning chromaton from the first location, basically the location closest to the upper left of the kilochromaton. If there are 2-bit errors in both of the winners and the 3rd chromaton, or if there is a tie in anyway between the 3, favor the triad from the losing chromaton.

If there is now one replicate with least/lowest severity of errors, then go to the winner section a couple paragraphs down. If both winning replicates now have the same number/severity of errors, discard the looser replicate with the different sum from step 1, and go to step 3.

If all 3 from the previous step have the same sum:

If there is a replicate that has the fewest/least severe errors, then that is the winner. If there is a detected error in one or more triads in this winner, and if there is a matching triad in another replicate that does not have an error at that location, then the error free triad is substituted into the winner chromaton. Continue to the part below: "If there is a winner determined".

But if a winner was not determined and there are two or three with the same amount/severity of errors, then do recombination as well. Compare the two with the same amount of errors and the same sums (or all three in the case they all are tied) and see if you can correct any using the data from the other. So if one triad that gave an error has a match in the other replicate chromaton with no error, use the error free version. You can use the third loser replicate (the one with more errors) to fix any errors you couldn't fix using only the winner replicates.

If there are two tied with the lowest number/severity of errors, use this priority. If three are tied, use that priority but instead of using the loser chromaton to break ties, use the chromaton in the first position in the kilochromaton.

After this discard the loser replicate if there is one. If now one replicate has less errors/severity than the others you have a winner and continue to "if there is a winner" section. If you still have the two or three replicates with that had the same sum in the previous step tied with number/severity of errors even after recombination, continue to step 3 after discarding any loser replicate chromaton.

If there is a winner determined:

If a winner is chosen in this step, then report a soft error of [#2].

3. Parity check

If they all have the same amount of errors or 2 have the same amount, then we need something more than a sum, we can use a "parity check".

A parity check is a count of how many times a certain value showed up in our chromaton. Add up the number of each type of triad, our base-4 numbers. So add up the number of each "0"s, the "1"s, the "2"s, and the "3"s. And compare the results across the remaining chromaton. This would be something like chromaton1 contains 5x "0", 10x "1", 1x "2", 0x "3". Now if chromaton2 matches chromaton1 parity check but chromaton3 has a different parity check, then we can exclude chromaton3. If all remaining replicate chromaton have different parity checks, then choose the one with the most even distribution of numbers. We can use a sort of "r^2 method". In our case there are 16 numbers so an even distribution would be 4x of each 0,1,2,3. Our r^2 method would subtract our actual number by 4 and then square the value. So for our sample set it would be (5-4)^2 + (10-4)^2 + (1-4)^2 + (0-4)^2. Now choose the one with the lowest value of this test. After this test the only errors that would be matching is if all the right values were included in both chromaton, but the location of the values were different. If a winner is chosen here, which means one has a lower parity check than the other 2, report a soft error of [#3]. If 2 or 3 of the replicate chromaton have the same parity check or two are tied with the lowest parity check, go to step 4 after you discard any replicates without matching parity checks.

4. Checksum

To check for possible locational error we will use a checksum which is a little more computationally intensive since it requires a 2D matrix. Basically each of the 16 values in the chromaton, 0-3, is placed in a 4x4 matrix.

Next the rows are added and the columns added. Mod 4 means that the sum is then divided by 4 and the remainder is reported. Now these remainders are compared between the 2 (or 3) replicate chromaton. If there are 3 chromaton left and 2 match and one doesn't, then discard the non-matching. If 2 or 3 are remaining and they agree then great, go to next step with all of the agreeing replicates. If they do not agree, choose the one with the average checksum closest to 1.5. To determine this you take all 8 checksums, add them together, divide by 8, and call that "answer". Then take (1.5-answer)^2 and compare this value to the other chromaton's value. The smaller number wins. If they are the same, go to next step. If there is only one winner at this step, report a soft error of [#4].

5. Compare each value

If you are here, then chances are at least 2 of your 3 replicate chromaton are identical. Congratulations! For the final check, each and every value is compared between eachother. We already have the 4x4 matrix set-up for each chromaton and each of the 16 values are compared between eachother. If they all/both match, great, select the first chromaton in the triad of one of the matching replicates as the winner, the replicate closest to the upper left of the kilochromaton, with no error reported! Simply report a "0" if all 3 replicates matched, and a "1" if 2 of the replicates matched. If none of the remaining replicates match, we again just choose the first replicate, the one closest to the upper left of the kilochromaton as the winner and report error [#5].


We just put these replicates through the wringer! We now have an excellent gauge on if we have correct data at the kilochromaton level. The megachromaton level will look at the data from the kilochromaton level and take into account the reported errors at this level. The higher the "#" error, the less serious it is considered since the higher the # the more hurdles the data overcame before being left with only 1 replicate remaining.


The Chromaton system can be used for any purpose including data transmission (including cryptographic keys and/or signatures proving ownership) and/or storage that is both human and computer readable, making visual displays for any use or purpose, for doing computations, etc. It was invented to be used in transferring private keys between users of digital collectible network. Chromaton can also be used as data storage for photonic computers.

For digital data storage and/or transmission uses, colors don't need to be used at all and can be replaced with numbers. Using this system virtually perfect data transmission can be achieved free of any size bit error. The whole purpose of the colors is making the data transmittible via visible photons at the speed of light with no prior established data link. But if there is an established data link between the 2 (like bluetooth or internet) then colors are not needed. One thing that would not work with numbers would be the the color filters (chromaton version 2), so if that was removed only 50% error correction could be carried out on the lowest level of chromaton. Perhaps instead of 2 bit groupings, 3 bit groupings could be used on the lowest level similar to higher levels of chromaton. And instead of having 24 base-6 digits on the lowest level and thus 60 binary bits, you would have 16 base-4 digits and thus 29 binary bits. This was done in Chromaton v3.

For physical storage diffraction patterns (diffraction grating), thicknesses and angle of transparent layers (refraction: prism effect/internal reflection), or other methods can be used to achieve a certain fingerprint of light reflection/absorption that can be read as a "color" bit. See also Chromaton disc.

For the time being chromaton is a 2D color representation of data. Using diffraction of light chromaton could become 3D and instead of each 2D position of color defining the data, 3D position of color would define the data.

Chromaton should absolutely never be used to identify people, should never be tied to an identity, and never used to verify people's identities or any mandatory or voluntary control or categorization of humans (including verifying compliance, which should never be done). Chromaton use should never be tracked and should always be anonymous (not merely "anonymized").

Keep Chromaton Free.


Hexagonal spiral numbering scalable [24]

Diceware uses dice to create random numbers in base-6 [25]

Femto laser creates color centers down to 3x10-3 um^3 which is around 100nm wide [26].

A complete history of error detection and correction [27].

Visualizing data sizes, bible is 4.5 megabytes, Human genome under a gigabyte [28]

Base pairs per ng of DNA is 9.13x10^11 [29].

DNA from shed skin cells on airbag containing 5.87 ng of extracted DNA [30] which gives us (9.13*10^11)*(5.87) = 5359310000000 base pairs. Each base pair is a bit of data so that gives us 669.9 gigabytes of data. Therefore if we assume about 1 TB of data is shed in skin cells and hair and other things, 19.6 petabytes are shed over 80 years. With 7.8 billion people about 1.86 yottabytes of data per year from the human species.

Human DNA shed in stool [31].

Byzantine fault tolerance [32].

Other pages that link to Chromaton:

Attachments to Chromaton:

Password to edit: nature