String Thinger Guide

Introduction Basic Controls Stage Status Building a Stack Recording and Sharing a Stack Security Processing Functions


StringThinger is a string manipulation multi-tool that allows you to make basic alterations or radical transformations to strings of characters and other data. You can do something as simple as translating your text into Morse Code or as complex as analysing the underlying character encoding in binary or using lists of data to build code arrays. StringThinger provides a means to build a 'stack' of transformation stages combining many functions which you can then record for later use and share with others.

Basic Controls

Diagram of processing stage controls.

Stage Status

Depending on the user selections, or the nature of the output, stages can occupy one or more states indicated by the colour of the stage header background.

Skipped (Grey Stripes)

Skipped stages are ignored during processing so the output from the stage above is passed unchanged to the stage below. This is useful when you want to see the effect the stage is producing.

Paused (Amber)

Paused stages will stop a processing cycle at the stage above. It does not stop processing cycles that are started below them, such as when you make a change to a stage below. The output of paused stages is frozen and will not change until the stage is unpaused. This means that the stage below will always start with the same input regardless of changes made to the stages above.

The frozen output of paused stages is not recorded when encoding a stack as a StringThinger link. When using a link to a stack with a paused stage all the stages below will have empty inputs and outputs until the pause is released.

Stages can be both paused and skipped, but the skipped status will take precedence and processing of the stack above will continue from the stage below.

Error (Red)

Stages show an error if something has gone wrong during processing. You will most often see this when making changes to the arguments in RegExp stages. Use the 'Keep Open' toggle to view the output for that stage and see a short message about the error.

Error stages produce no output so the stages below will have nothing to work with until the error is corrected or the stage is removed.

Blocked (Wasp Stripe)

Currently the only stage that will show this status is one using the Render HTML function which inserts the result of your StringThinger stack into the web page itself. If the result of the stage contains an immediate detectable threat to your privacy or security, StringThinger will prevent the output from being rendered.

If you are aware of the risks and wish to see the rendered output anyway you can disable the security measures using the green icon below the main interface.

Building a Stack

Adding a Stage

To add a new stage to your stack click in the '+' symbol of an existing stage. The new stage will be inserted immediately below the existing stage and will begin with the default 'Echo' function.

Functions and Arguments

Each stage performs a function selected from the list box on the left of the stage head. depending on the function there may be arguments that appear in the center of teh stage head which control the details of the function's opperation. The arguments may require the entry of numbers, strings or regular expressions, or may require selections from lists of available options (such as character code pages), or simple boolean options. It is possible to enter tabs, newline and other characters not normally permitted in HTML form by using escape sequences: '\t' for a tab, '\n' for a new line and '\uFFFF' for any Unicode character where FFFF is the hexadecimal codepoint. It should be noted that the codepoint is UTF-16 encoded but for the majority of cases this is simply going to be the codepoint value expressed as 16bit value (as a zero-padded four digit hex value). Some uses may require a surogate pair encoding using two escape sequences.


Normally only the last stage will display an output. Using the 'keep open' checkbox to the right of the function selection the stage will keep it's output visable even if it is not the last in the stack. It is also possible to change the height of the visible output by dragging the head of the stage below. To return the output are to it's default height simply toggle the checkbox again. In addition the nature of the output area can be changed form the normal inline display to a textarea which may be more suitable for some types of output, such as formatted text.

Some stages produce special output such as 'Render HTML!' which inserts the output into the HTML of the StringThinger page. At times some stages will report errors (by turning red) which will be discribed in the output area though there is no actual output for the next stage to read.

Moving Stages

Using the up and down arrows a stage can be moved up and down the stack one position at a time. When a stage is moved all of it's settings will remain the same. Regardless of these settings the last stage will always display it's output.

Removing Stages

To remove a stage click on it's 'X' icon. Stages can be removed from any point in the stack. If there is only one stage in the stack then deletion will cause it to revert to the default 'Echo' function.

Recording and Sharing a Stack

Some stacks can be very complex and may have taken some time to build. To enable you to record these stacks a link is provided that can be bookmarked by your browser (usually by right-clicking on it and selecting 'Bookmark link...'). Using 'Copy link address' you can paste the link into an email or a message board to share your stack.

Building a stack from a link is as simple as clicking on it and waiting for the page to load. However, some StringThinger URLs may be provided as plain text rather than a hyperlink. In such a case the URL can be pasted into the form provided on the StringThinger home page and, by clicking on 'Build this Stack', the encoded stack will replace the exisiting stack. It is also possible to combine two stacks using the 'Append this Stack' option which will build the encoded stack onto the end of any existing stack.

It is possible to include the input for a stack in the link by selecting the include option below the link form. This can produce an excessivly long URL which might cause problems. Alternatively a specific input could be quoted manually along with the link.

To change the title of your StringThinger link so that it will, appear when anyone bookmarks it, use the Title function. The Title will then appear as 'StringThinger: [Your Title]'.


Because the Render HTML! function inserts HTML into the page there is a risk of exposing the user to malicious code or revieling private information to a third party. For example the stack could generate markup to display an image loaded from another server and, in doing so, provide information about the user to that server.

To combat this StringThinger employs security measures that check the output for anything that could send data elsewhere, including images, CSS and scripting. If a threat is detected the output of the stage is blocked and the action reported by changing the colour of the stage head.

In some cases you may wish to view the blocked output (only recomended if you created both the stack and the input). To do this click on the green Security Measures icon on the StringThinger page and read the warning message before clicking on OK. To reactivate the security click on the icon again.

The Security Measures state is not recorded in a StringThinger link and will always be reactivated when the page is loaded or reloaded.


StringThinger normally processes the stack every time the input string is changed, a stage is added or removed, a function is changed, an argument is changed, etc, and will update whenever the user clicks in the input or argument fields. There is a delay between an action the start of a processing cycle which allows the user to type freely without every keypress triggering a cycle.

For stacks that handle large amounts of data this might still be cumbersome. The triggers for processing can be changed using the checkboxes at the base of the stack which can be unchecked to deactivate the clicking, typing and/or change triggers. Deactivating all of these means that the stack will not be processed unless the user clicks on the 'Process Now' button. Disabling the clicking trigger also disables processing on the addition, deletionand moving of stages (since that involves clicking on the stage buttons).

The state of the triggers is recorded in StringThinger links.