The obfuscate( function randomizes the letters and digits in text.


This function has one parameter:

cleartext – the text to be obfuscated.


This function randomizes the letters and digits in text, leaving punctuation alone. The replacement isn’t completely random, however, vowels will be replaced with vowels, consonants with consonants, digits with digits, and lower vs. upper case will be preserved. Any diacritical marks will be removed from the text before randomization.

obfuscate("Mark L. Jackson") ☞ Mikk G. Murtlom
obfuscate("mark.jackson@gmail.com") ☞ sibk.vawxjup@kzuyv.hig
obfuscate("456 Market Avenue, Suite 802") ☞ 037 Porran Ehynya, Ryydy 711

Keep in mind that this function will return a different result each time you use it, even if you pass it the same original text.

obfuscate("Alîča S. Mathüs") ☞ Ejuly M. Cydcon
obfuscate("Alîča S. Mathüs") ☞ Ugaso X. Suchav
obfuscate("Alîča S. Mathüs") ☞ Oboza V. Cijfaf
obfuscate("Alîča S. Mathüs") ☞ Iruby T. Piftal
obfuscate("Alîča S. Mathüs") ☞ Yjyse N. Laktum

You may want to obfuscate the text sometimes but provide an option to temporarily make the text visible. You could create a variable to control this.

letpermenent showNames = false()

Then you could use a Text Display object to display the Name field of the database using this formula:


If the showNames variable is true, the clear text will be displayed. If it is false, the text will be obscured. (Be sure to use the showvariables statement each time you change the value of the showNames variable.)

One problem with the formula above is that when using this formula, Panorama is actually taking the time to obfuscate the text every time, even when you are displaying the clear text. This revised formula eliminates that problem, so it will be faster if the text is large.


Panorama also has a special function specifically for obscruring the digits of a credit card, see the obscuredigits( function.

See Also


10.2NewNew in this version.