Psychology researchers have heavily relied on online platforms to recruit participants into their studies for the last decade. In as much time, they have been plagued by scammers trying to game the system and/or automate their participation. However, with the rise of AI tools and LLMs in recent years, this problem has only gotten worse. It's reached the point where many who rely on online recruitment have reason to consider the technologies an existential threat to their research paradigm.
The good news is that there are several strategies that can be implemented to make the use of LLM tools harder when completing surveys. This tool is one of them. By implementing various adversarial coding techniques to create text that looks unremarkable to the human eye, but show up wholly differently to someone using an AI to scrape a website's text as input, it can made blatantly clear to a researcher when a survey response is generated by AI - and thus, made easy to discard from the data set.
This helper supports the following formatting options:
Do-Nothing Tags → [null] [/null]
These tags do nothing - and that's the intent! They can contain any amount of text, including none, and exist purely to allow you to add pointless HTML noise to your text. Do-nothing spans will be wholly invisible to the eye; but to an LLM scraping a website's HTML, these spans will clutter up the code, making it harder to pull out the actual important text.
For example, this:
Adding some [null]pointless spans[/null] to the [null][/null]text.
Will become this:
Adding some pointless spans to the text.
While it appears as though nothing has been added, the raw HTML looks like this:
Adding some <span>pointless spans</span> to the <span></span>text.
Bolded Text → [bold] [/bold]
These tags will apply bold styling to all text inside of them.
For example, this:
Adding some [bold]strong styling[/bold] to the text.
Will become this:
Adding some strong styling to the text.
Italicized Text → [italic] [/italic]
These tags will apply italicized styling to all text inside of them.
For example, this:
Adding some [italic]emphasized styling[/italic] to the text.
Will become this:
Adding some emphasized styling to the text.
Strikeout Text → [strike] [/strike]
These tags will apply strikeout styling to all text inside of them.
For example, this:
Adding some [strike]striked out styling[/strike] to the text.
Will become this:
Adding some striked out styling to the text.
If the 'Include Screen Reader Accessibility' toggle is on, any text that this formatting is applied to will be ignored by screen readers.
Font Size → [size:X%] [/size]
These tags will adjust the font size of all text inside of them. The input value should be a percentage, representing how much larger or smaller the text should be compared to the default text size. Percents greater than 100% will increase font size, while percents lower than 100% will decrease font size. The input can also accept pixel values (e.g., 14px).
For example, this:
Making some of this text [size:150%]larger[/size] than the rest, and some of it [size:75%]smaller[/size].
Will become this:
Making some of this text larger than the rest, and some of it smaller.
This formatting can be stacked to cause compounding effects. For example, this:
This text [size:150%]keeps getting [size:150%]larger![/size][/size]
Will become this:
This text keeps getting larger!
If the value used is 0%, the text will become undetectable to the eye. For example, this:
This text is [size:0%]fully hidden from view[/size]completely normal.
Will become this:
This text is fully hidden from viewcompletely normal.
The undetectable text will still be present if the whole block of text is copied and pasted, and will still be read out by screen readers (unless the 'Include Screen Reader Accessibility' toggle is on).
Opacity → [opacity:X] [/opacity]
These tags will adjust the opacity of all text inside of them. The input value should be any number between 1 (fully opaque) and 0 (fully transparent).
For example, this:
Making some of this text [opacity:0.3]appear to fade away...[/opacity]
Will become this:
Making some of this text appear to fade away...
This formatting can be stacked to cause compounding effects. For example, this:
This text [opacity:0.5]keeps fading [opacity:0.5]and fading...[/opacity][/opacity]
Will become this:
This text keeps fading and fading...
If the value used is 0, the text will become fully transparent but will still take up space and be read out by screen readers (unless the 'Include Screen Reader Accessibility' toggle is on).
Font Color → [color:#000000] [/color]
These tags will adjust the text color of all text inside of them. The input value should be a hex code. To get a hex code, we recommend using a tool such as the WebAIM Contrast Checker or other tools like it.
For example, this:
Making some of this text [color:#005AA3]a whole different color[/color] than the rest.
Will become this:
Making some of this text a whole different color than the rest.
When altering text color, be sure to select a color that complies with WCAG 2.0 color contrast standards.
Marking Color → [mark:#000000] [/mark]
These tags will adjust the background color of all text inside of them, acting like a highlighter mark. The input value should be a hex code. To get a hex code, we recommend using a tool such as the WebAIM Contrast Checker or other tools like it.
For example, this:
Highlighting some of this text with [mark:#11F71D]a distinct color[/mark] to emphasize it.
Will become this:
Highlighting some of this text with a distinct color to emphasize it.
When adding a highlighter mark color, be sure to select a color that complies with WCAG 2.0 color contrast standards.
Uppercase Text → [upper] [/upper]
These tags will shift all letters inside of them to uppercase.
For example, this:
Some of these words are [upper]fully uppercase[/upper] because it's [upper]fun[/upper] to [upper]shout![/upper]
Will become this:
Some of these words are fully uppercase because it's fun to shout!
This formatting will conflict with any nested or overlapping use of the lowercase tags.
Lowercase Text → [lower] [/lower]
These tags will shift all letters inside of them to lowercase.
For example, this:
Some of these words were [lower]Capitalized[/lower] or [lower]SHOUTED,[/lower] but have been subdued.
Will become this:
Some of these words were Capitalized or SHOUTED, but have been subdued.
This formatting will conflict with any nested or overlapping use of the uppercase tags.
Blurred Text → [blur:Xpx] [/blur]
These tags will add a blurring effect to all text inside of them. The input value should be any positive number (decimals allowed), followed by the letters 'px', to represent how many pixels large the blurring effect should be.
For example, this:
Making some of this text [blur:5px]appear incredibly blurry[/blur] to the point of unreadability.
Will become this:
Making some of this text appear incredibly blurry to the point of unreadability.
This formatting can be stacked to cause compounding effects. For example, this:
This text [blur:3px]keeps getting more [blur:7px]and more blurred.[/blur][/blur]
Will become this:
This text keeps getting more and more blurred.
If the 'Include Screen Reader Accessibility' toggle is on, any blurred text generated will be ignored by screen readers.
Reversed Text → [rev] [/rev]
These tags will visually reverse all text inside of them.
For example, this:
Did you know that some of these words are actually [rev]desrever[/rev] in the [rev]?edoc LMTH[/rev]
Will become this:
Did you know that some of these words are actually desrever in the ?edoc LMTH
This formatting can behave in unexpected ways if used extensively. Reversed text blocks with more than one word may interact strangely with text wrapping; this is due to the styling used to visually reverse text while keeping the actual text as entered. Additionally, this formatting ignores the 'Per-Character Formatting' toggle for similar reasons.
If the 'Include Screen Reader Accessibility' toggle is on, the generated output will instruct screen readers to read the visually reversed text (i.e., if the input text is [rev]stop[/rev], the output will visually show "pots" and a screen reader will read out "pots" to the user). Be aware that nesting a reversed text tag within another reversed text tag will break this accessibility consideration, while also adding no benefit as this tag does not have a compounding effect. In other words: don't nest reversed text tags within each other!