This is a so-called "invalid state", because the sign is not meant to be there in a normal situation. So you have to use tricks to get it there and then be careful to not change anything on any of the six adjacent blocks ever again. **With commands**, you can just use `/setblock`, because it doesn't update the block. But you have to specify everything about the sign. The one in your example can be set like this: /setblock ~ ~ ~ wall_sign 0 {Text1:"",Text2:"This is a",Text3:"floating sign",Text4:""} You have to replace the 0 with a number from 0 to 3, depending on the direction of the sign. You may have to have all four "Text" tags for it to work. The wiki says that, but I didn't test it. **Without commands**, you always have to abuse bugs. Those can break in any version, so this is one example for 1.12.2: Place dirt. Place a two blocks high flower above it, for example a sunflower. Place the sign on the side of the top block of the flower. Break the dirt. Result: The plant breaks, but the sign doesn't get updated, so it floats. This relies on [this bug](). (still searching for a link, will update answer)