also search for: $median, $averageC+, $maximumS, etc.last updated: 2022-10-05 12:00:01 UTC
global rank: #
percentile rank:

glicko: ± - games won: / (%)
statistics correlator for all players currently in the TETRA LEAGUE (excluding unranked). outliers with negative GLICKO are hidden to help with players: 39588last updated: 2022-10-05 12:00:01 UTC
the amount of TR required to reach RANKS depends on the distribution of the playerbase. more info on this CHEATSHEET from OSK.last updated: 2022-10-05 12:00:01 UTC
(1.0% of player base)
(4.0% of player base)
(5.9% of player base)
(6.0% of player base)
(5.9% of player base)
(7.0% of player base)
(7.8% of player base)
(8.0% of player base)
(8.0% of player base)
(8.0% of player base)
(8.1% of player base)
(7.9% of player base)
(6.1% of player base)
(6.0% of player base)
(5.1% of player base)
(2.6% of player base)
(2.6% of player base)
Evolution of the rank thresholds over time.last updated: 2022-10-05 12:00:01 UTC
concurrent players over time.
default range: 24H (resize and drag blue box to navigate)last updated: 2022-10-05 12:00:01 UTC

Author: TENCHI


Original vector skin heavily inspired by Outrun and Synthwave.

Recommended backgrounds: #1 / #2.


Original minimalist skin by badgoblin.

Three shape variants, each with a hollow ghost piece variant.

Recommended background: None (black)

Author: SHIO

Original pixel skin by Shio.

Sit back, relax, sip on your whiskey, and think back to last month when you chased and tested those two replicants.

Recommended background: #1.

Recommended BGM: #1.


Original pixel skin by MHFiver.

Use in case of giant ape infestation in your construction site.


A refreshing way to play TETR.IO

Original skin by MHFiver.


Original pixel skin by Madeline.

“I'm not a bad slime!”

Recommended BGM: #1.

Author: TENCHI

10 PRINT CHR$(205.5+RND(1));:GOTO 10

Recreates a famous Commodore 64 10 PRINT one-liner: a simple code that only outputs slashes and backslashes, yet the randomness creates an intricate maze.

If this skin is too hard to play with, try the colored variant.

Recommended backgrounds: None / #2

Recommended BGM: #1-#16

Author: TENCHI

Simple beveled blocks depicting classical Asian elements.

In order: fire 火, wood 木, light 光, wind 風, heaven 天, earth 地, water 水, void 空, metal 金.

Palette by ARNE.


Vector recreation of Puyo Puyo Tetris for TETR.IO by Xelitik.

Recommended background: #1

Bonus: Sound pack by ZaptorZap & Neeko

My custom background won't load

If the custom background you are trying to load is black, first make sure it's not really dark (try to adjust the option BACKGROUND VISIBILITY).

Otherwise, this is probably due to the image host where the custom background was uploaded does not explicitly allow web applications to download their content (see CORS Headers for more information).

UniQMG made a live tester for backgrounds, which will tell you if a provided link can be used ingame.


  • (Recommended) Re-upload your custom background to a host that allows file sharing such as imgur or

    When linking an imgur picture, make sure to copy the link of the image itself and not the album.

  • Use a CORS proxy, which will get around the header issue by adding their own. For this, just add in front of the URL of the custom background

    For example:

    (Note: including the second https://)

How do I use custom skins?

Currently, the only way to use block skins is to use TETR.IO PLUS, a mod for TETR.IO made by UNIQMG, available as a Firefox add-on, or a mod for the desktop client (follow the release notes carefully for instructions).

For more help, please refer to TETR.IO PLUS's own Wiki and FAQ.

What is VS score?

The VS SCORE is an indicator of how well you did during a TETRA LEAGUE match. It is calculated using the following formula:

VS = [ ( lines sent + garbage cleared ) / pieces ] * PPS * 100

To improve your VS SCORE, improve your APM, PPS, and defense game.

Note: the * 100 multiplier is there to put this indicator on the same scale as APM, instead of being a small value.

What is finesse?

FINESSE is a measure of how optimally you place tetrominoes on the board. A perfectly finessed piece will have been placed to its desired location using the least amount of button inputs.

You can check out the Finesse article on Hard Drop for the optimal movements of each piece. You can also use Hard Drop's Tetresse tool to train finesse.

To improve your FINESSE:

  • Focus on efficiently using clockwise and counter-clockwise movements, as to not waste button presses
  • Use DAS to your advantage
  • Get used to having a low (or optimally, 0) ARR
What do level badge colors mean?

The level tag's color as well as the shape on the right changes depending on the level. The rule is:

  • Every 10 levels, the shape changes color
  • Every 100 levels, a new shape
  • Every 500 levels, the level tag's color changes
  • At level 5000, surprise!

Here is a special level tag that previews how it would look at any level: just click on it and type!

The handling feels slippery, but my settings are the same as on JSTRIS

The way handling is implemented in JSTRIS and other clones is buggy and doesn't follow guideline:

  • In JSTRIS, starting a DAS will first wait for a DAS period, wait for an ARR period, and then start the movement
  • In TETRIO, starting a DAS will first wait for a DAS period, and then start the movement.

Here is a diagram made by OSK to illustrate:

How can I see player averages / medians / maximums for a specific rank?

The PLAYER STATS tab provides meta players that start with the character $ that can be searched just like regular users, whose stats reflect different measurements:

  • $average: the whole server's average stats
  • $median : the whole server's median stats
  • $maximum: the whole server's maximum stats

Moreover, for each of these measurements, you can search for rank-specific stats by adding the rank name at the end of a meta player, for example $averageA- or $maximumB, etc.

Why did I get matched against a rank when I am only !

There are several factors to consider:

  • The matchmaking system can only give you a match of similar rank only if said similar rank is currently in the queue!

    When there are only 10 people queuing, the chances that someone with your exact skill is also in the queue isn't guaranteed. So instead of making players wait, the matchmaking system will match against the next closest level.

  • Difference in level between ranks is actually smaller than you'd think.

    Give it your best, and it will be a valuable experience.

  • The RD value allows for quite a large overlap between ratings, which means that your actual glicko is anywhere between glicko - 2*RD and glicko + 2*RD, allowing for matchmaking within this interval.
Ranks are messed up, I beat a and get crushed by a . . .

To quote @Spork on Discord:

Some people aren't properly ranked

Some people have great days

Some people have awful days

Some people are just in the middle of massive improvement
and are on their way up to their new rank

Some people leave the game for 2 months,
"grind jstris" the entire time
and then come back to rank up

People sometimes forget that the players are humans
and not AI playing at a specific level

Also related: this question.

What are those lines about a new TR formula and new percentiles?

There are a few markers on various graphs around the site to indicate the dates where some things about the game changed:

  • On the PLAYER STATS and RANKS tabs, the new TR formula line marks when the TETRA LEAGUE started using a different TR formula to determine earnings and losses after a match, in an attempt to correct the rank distribution. After this change, the earnings were more significant from before, and that needed to be represented on the graph. This change happened on version 3.2.0.
  • On the RANKS tab, the new percentiles line marks when the percentiles that determine rank thresholds were changed. In general, this change increased the necessary TR needed for ranks A to SS. This change happened on version 3.2.3.
Where did you get the data for TETRIO Stats?

The API is now public and available at

The league data has been scraped hourly since the open alpha started, first using a private API and now the public one.

This website however only shows the last month of player history, which may be improved at a later date.

I have finished my 10 placement matches, but still have no rank?

This means that your RD is still too high.

The initial placement matches are a way for the server to get a rough estimate of your level, at the end of which you will have an initial TR rating.

This rough estimate however is denoted by having a high RD (rating deviation), the number after the ± in your glicko rating. Only when that number gets under 100 will you have a rank.

The RD value can be found in the enter matchmaking screen in the tetra league in the game, or on the tetra channel site.

For this, there is only one way: play more matches.

The desktop version's uncapped framerate destroys my laptop!

On the desktop version of the game, you can limit the framerate to your screen's refresh rate (for example 60 FPS).

You can enable this setting in the game's settings under desktop settings.

You can verify if the framerate cap got applied on the debug display by pressing F8.

My game is behaving weirdly / I can't connect / I keep getting connection errors

This is probably due to an old cache.

Possible solutions:

  • Do a forced refresh: CTRL + F5, or ⌘CMD + ⇧shift + R on Mac
  • Clear the cache of your browser and reload the game
What is the box under the graphs in the player stats section?

It is a draggable timeline:

You can resize this box by dragging the sides to zoom into the graphs, and then drag the box left or right to go backward or forward in time.

How many lines of garbage do my attacks send?

Here is the current attack table used by the game posted by OSK on Discord, showing how many lines of garbage an attack will send, depending on when in a combo the attack was made:

For example, doing the combo Triple > Single > Single > Quad will send 2 + 0 + 1 + 7 = 10 lines of garbage total.

The B2B bonus adds + 1 when active, and increases at regular intervals: the more B2B are performed in a row, the higher the B2B level is, starting at level 2 when 3 B2B are performed.

How does the game decide which rank I have?

Here is the current rank distribution used by the game, as posted by OSK on Discord:

Note: the percentiles got updated on version 3.2.3.

This means that the ranks are distributed equally across the player-base and is not intrinsically tied to the exact number of TR or glicko — the ranks are spread throughout the whole player-base, meaning that the top 1% will always have the rank X while the bottom 2.5% will always have the rank D.

In other words, if the server ever only contains pro-level players, the bottom 2.5% of those pro-level players will still have the rank D, even if they are so strong. And similarly, if the server only ever contains beginner-level players, the top 1% of those beginners would still have the rank X.

Moreover, your rank will only get updated if you play league games, and can only go down if you lose, and only go up if you win.

To check which amount of TR gets you which rank, check out the RANKS tab of this website!

How much XP do I need to reach level X?

The rule of thumb used to be "about 5000 per level" but OSK recently tweaked the formula to make it longer to reach high levels:

(where x is the amount of experience and y the level)

A playground is available here to see this formula plotted.

Here is a very approximate reference for the XP needed between two levels at various ranges:

Level    0 —    6:  ~1000 XP
Level    7 —   24:  ~2000 XP
Level   25 —  127:  ~3000 XP
Level  128 — 1021:  ~4000 XP
Level 1022 — 1261:  ~5000 XP
Level 1262 — 1652:  ~6000 XP
Level 1653 — 1974:  ~7000 XP
Level 1975 — 2244:  ~8000 XP
Level 2245 — 2475:  ~9000 XP
Level 2476 — 2676: ~10000 XP

A precise list for the XP needed to reach the next level is available here (up until level 5000).

How do I set a profile picture?

You can set a profile picture in the ingame settings, under account settings.

How do you import a custom map?

There are currently two ways to import a custom map:

  1. Use the Chrome dev tools to "inspect element" the mission field and make it a map one by double clicking "mission" and making it "map"
  2. Or use tetrio plus and flip one single checkbox to make the map field appear.

You can make maps with using tetrio studio on this site.

What do the different targeting modes do?

Here is an explanation from OSK on Discord:

Tends to target those who have received the least garbage this round.

Sorts all players by least garbage received. Takes the top 10, and picks one at random, with the 1st person (least received) having 10x as much chance of being picked as the 10th person (most received out of the top 10)

Tends to target those who have the tallest stack at the moment.

Sorts all players by height of their stacks. Takes the top 10, and picks one at random, with the 1st person (tallest stack) having 10x as much chance of being picked as the 10th person (shortest stack out of the top 10)

Targets people at random, with no logic to it.
Targets the person who most recently sent you garbage, or a random person if you have not received any (or the target is KO)
Where do you get a replay?

From either the ingame or standalone tetra channel sections.

Ingame, they are located in the menu: tetra channel and then ME.

On the site, just input your or anyone else's name into the name search to reach their user profile where their replays should be located.

How do I play back a TTR replay file?

Drag and drop the file anywhere on the game window while in the menus.

The game will then load the replay file and you can play it back.

The same applies for custom game settings in Solo (TTP files) and multiplayer replay files (TTRM files).

It matters if you have a correct replay with an incorrect file extension, as tetrio just won't load it at all.

When are replays saved?

Your last ten tetra league replays are saved publicly for everyone to view on the tetra channel site no matter your settings.

Custom online 1v1 matches are recorded in all graphics presets except for minimal mode if you have the "show duels side by side" option off. You must save the replay locally however, otherwise it gets thrown out when you leave the results screen.

What do the indicators and graphs on the replay timeline mean?

For Sprint replays, the yellow triangles indicate a finesse fault. If your sprint has more than thirty faults, they won't show up. The red gradients indicate a "choke": chokes are found if a piece is more than 3x slower than your PPS at that point. The yellowish orange graph shows your "local PPS" at that moment in time: local PPS is your PPS over last 10 pieces.

For Blitz replays, the yellowish orange graph is your "local SPP": local SPP is the SPP over last 30 pieces, divided by level.

For Versus replays, it changes into a two-sided blue and red graph, showing the VS score difference the left and blue player has over the other player.

What do the network icons mean?

Here is the description for the network icons, as posted by OSK on Discord:

After this picture was made, a new icon was introduced, which indicates that you have been disconnect entirely, and Ribbon is trying to reconnect the client.

Can you play on mobile?

Yes. Provided you have a powerful enough Android phone and an external keyboard or controller to control the game with.

You can also try and manually install an old version of Firefox mobile to use tetrio plus with (mobile addon support was dropped in the latest releases) to get onscreen controls and eliminate the need for an external controller.

What do the different arrows mean?

The different arrows in the KO feed have different meanings, depending on how the targeted player was defeated:

Indirect KO: someone sent the target lines, and sometime later, the target topped out.
Direct KO: someone sent the target lines which directly defeated the target.
Spike KO: so much lines were sent that the target would top out if all the lines were taken (the stack would exceed 40 lines tall).
How do kicks behave when using 180° rotations?

Here is a table showing the kicks on T-pieces when using 180° rotations, as posted by OSK on Discord:

Glossary of abbreviations
Tetra Rating: determined by combining your glicko and RD

Based on GLIXARE

The rating system used to determine player skill in TETR.IO

Based on this paper by Mark Glickman

Rating Deviation: how unsure the system is of your glicko (i.e. its deviation)
Pieces Per Second
Attacks Per Minute
Score Per Piece
Perfect Clear
Soft / Hard Drop
Attack / Defense Per Piece
Win Rate
GW / GL / GP
Games Won / Lost / Played
Back To Back
Delayed Auto Shift: the amount of time the game waits before repeating a directional input when held down
Auto Repeat Rate: the amount of time between each repetition of a directional input when held down, active after the initial DAS delay
Soft Drop Factor: when doing a soft drop, the gravity factor that will multiply the fall speed of the current piece. For example, an SDF of 2 will make the piece drop two times faster than current gravity
Commands and list of /set properties

Commands are actions you can take by typing them in the chat of a custom multiplayer room. Commands were added in Version 3.1.0, Version 3.2.0 and Version 4.1.1.

Here is a list of commands:

/spectate [NAME] or /spec [NAME]
Move yourself or someone else (room host only) to spectator bracket
/play [NAME]
Move yourself or someone else (room host only) to players bracket
/ignore [NAME] or /i [NAME]
Ignore a user
/unignore [NAME] or /ui [NAME]
Unignore a user
/kick [NAME] or /k [NAME] (room host only)
Kick a user from the room
/clear or /c
Clear room chat for just you
/clearall or /ca (room host only)
Clear room chat for everyone
/start (room host only)
Start the game
/takehost (room creator only)
Take back your position as host of a room
/host NAME (room host / creator only)
Pass on host owner ship to somebody else
/set NAME1=VALUE1;NAME2=VALUE2;... (room host only)
Set room parameters (see below)

Note: a NAME in caps means the command expects an parameter, a [NAME] name in square brackets means the parameter is optional.

Version 3.2.0 added the /set command, which allows the room host to quickly set multiple room properties at once. To set multiple properties, separate them with semi-colons.

For example, /set cool room;meta.match.ft=15 renames the room and makes it a FT15.

List of properties (courtesy of AZNGUY.MP4 on Discord): NAME
I find this site helpful, how can I help?

If you like what I do, you can tip me on Ko-Fi. It will help with the server costs and give me some motivation after working more than 200 hours on this site! ☻

Please note: only donate if you have disposable income!

If you have any improvement ideas, positive or negative feedback, feel free to contact me: tag or DM @Tenchi on the official TETR.IO Discord server.

Special thanks

Many people helped make or improve this site without whom this wouldn't have been possible.

I would like to thank them, in no particular order (literally random every refresh):

Sorry if I forgot a few names!

I get an error about WebGL

If you get an error saying TETR.IO requires WEBGL, you can find some solutions on the Tetrio Github:

  1. For Chrome
  2. For Firefox
buy me a
coffee ?