This simple puzzle demonstrates how you can use invisible ink to hide text in online puzzles.

Your task is simply to decode the text hidden in the quoted line below:

Happy​​​​‍​‌‍​‌‌​‍​‌‌​‍‌​‌‌‍​​​​‍‌‌‌‍​‌​​‍​​‍‌​​‍​‌‍‌​‌‌‍​​​ Christmas!

(The solution is a pair of English dictionary words. It is not "Happy Christmas!").

  • 2
    $\begingroup$ Time to pull out some text editor tools... $\endgroup$ – Sp3000 Nov 18 '14 at 14:29
  • 2
    $\begingroup$ I think this was a good use of steganography. The key was that the puzzle explicitly asks to find the hidden message. The straightforward "nothing up my sleeves" surface text emphasizes that. There's no wasting time looking at the surface content, lost at what to do. The Morse code step, though easy to guess, makes it feel like a hidden code, not just an invisible message. Overall, a solid simple puzzle. My one quibble is that "Happy Christmas!" sounds weird and overlaps with the answer -- why not "Merry Christmas"? Or, some hidden message that opposes or reinterprets the surface message. $\endgroup$ – xnor Dec 8 '14 at 2:04

The message is



Between "Happy" and "Christmas" are a bunch of Unicode zero-width characters. Mapping zero-width space, zero-width non-joiner and zero-width joiner to ".", "-" and " " respectively give the message in Morse.

  • $\begingroup$ Well done! That was quick. :) $\endgroup$ – A E Nov 18 '14 at 14:37
  • 2
    $\begingroup$ @AE Wow, nice puzzle AE $\endgroup$ – d'alar'cop Nov 18 '14 at 14:37
  • $\begingroup$ @d'alar'cop: thanks! :) Just a little demo of the technique. $\endgroup$ – A E Nov 18 '14 at 14:37
  • 1
    $\begingroup$ @AE - Seconding d'alarcop. +1 for both question and answer. $\endgroup$ – Rand al'Thor Nov 18 '14 at 14:40
  • $\begingroup$ Can you explain how you were able to see the ZWS, ZWNJ, and ZWJ? Which tool did you use? $\endgroup$ – Aura Dec 10 '14 at 19:05

The answer is "Jo"


Each symbol in "Happy​​​​‍​‌‍​‌ Christmas!" can be considered as a byte, i.e. ones and zeroes. Taking the last bit of each byte we get 01001010 01101111 which in ASCII is respectively "J" and "o". This approach is most often used with images as minor changes to the colour are really hard to detect by the human eye.

  • $\begingroup$ +1 interesting! Nice guess, I hadn't thought of that. But the answer I'm looking for is a bit longer than that. I've clarified that in the question. $\endgroup$ – A E Nov 18 '14 at 14:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.