If you have ever tried to send an empty message in Telegram, then you most likely found out that neither the space sign nor the newline sign (Alt + Enter) are sent - the input field is simply cleared. At the same time, you could see that other people literally send you an empty space, and they succeed. Where is the magic here? If you want a short answer – they insert the "broken" character u+3164. You can copy it from the brackets and use: "ㅤㅤㅤ". If you want a more detailed answer, below we will tell you where the invisible text comes from, how to get and use it, why you should not use it in the code and what other characters there are.
Invisible Symbol – how does it work?
Let's start the explanation with tables of characters and encodings. Any computer at the hardware level understands 2 characters: 0 and 1. This is not convenient for people, because we are still more used to letters that are formed into words, sentences, paragraphs, and so on. To work with these letters without any problems, we have come up with a very simple scheme – we take the letters in order and give them unique numbers: a = 1, b = 2, c = 3 and so on. We also give unique numbers to capital letters, signs (dot, comma, question mark and so on), whitespace and numbers – a list looms a unique identifier which is assigned to each possible character. This list is called the character code table, and the first code table is recognized was ASCII:
The second half is empty. It is intended for regional characters. The table itself is like a reference information. There is also an encoding – a set of instructions for decrypting this table. Encodings appeared because of regional standards. They are needed in order to read characters "correctly". If we take the encoding that was common in the CIS at that time, then there will be an instruction in it: "To get the letter "г" use 8x3 in ASCII"; if we take the encoding that was used in Germany at that time, then it will be written: "To get the letter "β" use 8x3".
Since it was terribly inconvenient because of localization into several languages, a new character table, Unicode, was invented and standardized. Unicode can contain more than 1,000,000 characters. At the moment about 100,000 characters have been added to Unicode – so, another 90% of cells are available. A universal UTF encoding was invented for Unicode to make it easier for designers to draw fonts (yes, for each separate encoding, designers need to draw a separate font).
That's enough background – now it's time to find out where the invisible character comes from. It's all about the bugs of Unicode: some special (control and whitespace) characters do not behave as intended. The most interesting group of bugs for us is the invisible character. The point is that the sign should be special and should be displayed as a very small whitespace, but the encoding perceives it as a full–fledged character (like a letter or a number) and displays it as a large space. You may have already guessed how the invisible area as a full–fledged sign can be used - to insert a space where it is not provided.
Invisible text – how to copy and paste?
To begin with, we will inform you of the sad news: even these encoding bugs are gradually being fixed. Earlier (in 2012), a trick was popular in “Vkontakte” – it was possible to insert a newline control character into the status, and the status was divided into 2 lines. Now you can't do this – the site processes the data output correctly, and such an inscription no longer breaks the string:
In addition to &nsbp, social networks and messengers have cut all control and special characters – you can not turn the text upside down or display it backwards if it is not initially provided by the language. There are services like https://textinvert.ru/, which allow you to change the text, but they do not turn it upside down, but pick up similar letters in other languages. It requires a special algorithm. It is extremely difficult to create a large empty text now (although it is still possible), but the invisible emojis and the empty set sign that broke many fonts are also fixed now. All that remains is to send empty messages like these:
Unicode U+3164 for inserting an invisible character
So, the most useful thing is an invisible space, aka an "empty string". In fact, there are 3 of these characters, here are their codes:
Charaсter’s code |
Character |
U+115F |
ᅟ |
U+1160 |
ᅠ |
U+3164 |
ㅤ |
To see the character, double-click on it in the table. “Word”, by the way, slightly highlights the symbol in gray.
As for the rest of the characters, there are still whitespace characters with addresses in the area of   –  , but we tested them and found out that messengers perceive them as ordinary spaces – therefore, they are not of interest. If you need them anyway or you want to test them by yourself in different services – here are a few more spaces and control characters:
Charaсter’s code |
What does it mean? |
Character |
U+00A0 |
Space without a gap |
|
U+2003 |
Em space |
|
U+2007 |
Curly space (whatever that means) |
|
U+2008 |
Punctuation space |
|
U+2009 |
Narrow space |
|
U+205F |
Average math space |
|
U+3000 |
Ideographic space |
|
As for the three above characters, initially they are placeholders for overlapping Korean characters. They are regarded as full-fledged characters, although they are fillers. Perhaps this behavior is due to the fact that when a placeholder is used, the hieroglyph should not be transferred to a new line. If the character is considered a whitespace, a transfer may occur (it depends on other control characters). Anyway, you can copy an empty character from the table and paste it wherever you need. But where it can be inserted – let's see below.
Invisible text in WhatsApp, VK, Instagram, Discord and games
As we have already said, all major platforms have made sure that control, special and other "non-standard" characters are cut out during processing. Therefore, the scope of application of such symbols is extremely limited, although in some places they can still be used.
WhatsApp, Viber, Telegram:
If you insert a regular whitespace, then WhatsApp, like other messengers, does not allow you to send this message – the "Send" button does not appear. U+3164 can be sent. The result is an empty message.
VK, Facebook Messenger:
There is the same situation as with messengers – you can send empty messages to private messages. By the way, you can also put U+3164 in the VK status – it will be displayed as an empty line. If you put a regular space, the status will be deleted and the inscription "Set status" will be visible.
TikTok, Instagram: There is no option to use the hidden space. Both platforms regard the hidden space character as a regular space.
Discord:
Discord allows you to send empty messages. At the same time, if you try to create a channel with an empty name, Discord will not allow you to do this:
FAQ
If I put an invisible character in Skype, will the status be "offline"?
No, you can write any text in the account status bar (including a hidden space), the status “online” or “offline” will not change.
What are the problems with the null character in programming?
You shouldn't use them in your code if you don't want to ruin it. If you need to use a character for storage or output, write it to a variable or to the output with a Unicode-code. Why is it better not to use it? Here's an example for you:
As you can see, we have declared a variable that has spaces in the name, which Python forbids. At the same time, PyCharm warns that something is wrong with this variable:
Not only are you violating the rules of the language, you are also putting a spoke in your wheels: to access a variable, you will need to manually copy and paste its name. If you are doing some project for yourself and want to complicate your life, you can use such spaces, but if you are working on some serious project, do not even try to do this, otherwise you’re going to be in trouble.
Can a special character break the layout?
In theory, this is possible provided that the layout is done crookedly or inherits bad patterns. It is better not to use such characters in the layout, if you do not want to if you do not want everything to break down one day.
Is it possible to use these symbols for hacking?
Technically, one of the control characters – ‘\0’ – can be used to hack the system through a program written in C. A null terminator indicates to the program that the line has ended, and malicious code can be written after the terminator. But this is very difficult, because firstly, you need to find a program that incorrectly processes incoming lines, and then also allows you to run malicious code from someone else's memory. About 15 years ago it was a popular way of hacking, now it is more like a museum exhibit of hacking.