Here’s the incomplete documentation for most apps on this site. None of the apps use cookies or socalled “local storage” functionality: thus the only way to remember your data is via permalinks you can bookmark.
app  description  syntax  links  extras 

Visual SQL  use SQLite 3.32 on the go, showing query results using graphics and colors  SQL  ✓  
Table Formulas  transform/explore/view tabular data  JS  ✓  
Data Tiles  summarize TSV files with colored tiles  ✗  
Data Inspector  inspect TSV files at a glance with stats and visual/table summaries  ✗  
Integer Calculator  generate columns of values using increasing number values  JS  ✓  
Query SQL  drag/drop TSV files, then query imported tables with SQLite 3.32 into copy/pasteable TSV output  SQL  ✓  
Quick Adder  quickly add numbers: numbers can either be explicit or the result of some formula given  JS  ✗  
Quick Calculator  quickly calculate with the last 2 numbers given: numbers can either be explicit or the result of some formula given  JS  ✗  
Unit Converter  allinone unitconverter and calculator  JS  ✗  
Canadian Exchange  show recent exchange rates from/to Canadian and US Dollars  ✗  
Currency Inflator  find the value of money by year for Canadian and US Dollars  ✗  
Function Heatmapper  view a 2input math function at a glance  JS  ✓  
Function Viewer  view 1 or more 1input (x) math functions  JS  ✓  
3D Grapher  view/rotate 1 or more 2input (x, y) math functions as 3D wireframes  JS  ✓  
World Mapper  show colored bubbles from a table with latitudelongitude columns on a map of the world  ✓  
Minesweeper  play Minesweeper with no flags  ✗  
Memory  match pairs of animated characters  ✗  
Bubbles  pop all the bubbles you can by clicking/tapping them  ✗  
Emojis and Emoticons  a document to copy common emojis from  ✗  
Align 4  2player game where the first who puts 4 adjacent circles together wins: these 4streaks can be horizontal, vertical, or diagonal  ✗  
Multipage Viewer  view multiple webpages sidebyside from anywhere  ✓  
Shady  run WebGL fragment shaders on your GPU  GLSL  ✗  
Data Tiles  view values from a data table as colorcoded tiles  ✗  
Timezoner  view the current time for all the cities you pick/click  ✓  
Compare Images  drop 2 image files onto the page to see them side by side: move the mouse to interactively change how much each image is shown  ✗  
Song Shuffler  play your favorite songs in shuffle mode  ✓  
Tone Mixer  mix multiple sine waves and play them as sounds  ✗  
Audio Synth  handcode sounds/tunes  JS  ✗  
Read Aloud  reads text to you using a speech synthesizer  ✓  
Document Scratchpad  type/paste text and pictures as throwaway notes  ✗  
Doodle  draw with your mouse: rightclick for a saveimage menu option  ✗  
Dictionary 

✗  
Randomizer  pick various kinds of random values at once  ✗  
Table Converter  clean/convert data from/to common tabulardata formats  ✗  
JSON Inspector  view the structure of JSON data, no matter their “shape”  ✗  
Fake CLI  run Linux shelllike commands, including command pipes  Shell  ✓  
Text Editor  use a text editor similar to Visual Studio Code  ✗  
Talk Is Cheap  show a random quote  ✗  
Meme Machine  make your own impactfont meme: rightclick on the pic when done for a saveimage menu option  ✗  
Calendar Maker  choose a year and make a printable 13page calendar, where the first page is the cover  ✗  
Compact Calendar  see all days in a year: Page Down and Page Up change the year shown; add, say, #2005 (or any other valid year) to end of URL to change default year shown  ✗  
Canadian Exchage Rates Tracker  a multiyear timeline of currency exchange rates relative to the Canadian Dollar  ✗ 
Run SQL queries using a modern version of SQLite3. While the results view is similar to Table Formulas’s, this app has no sortbycolumn control, since SQL lets you sort right from the query.
On the other hand, this app has a splitbycolumn control, which Table Formulas doesn’t: after the full resulting tables, multiple tables split according to distinct values from the column selected will follow it.
The only tabular data format supported is TSV/TXT.
Similar to Visual SQL, this app differs in 1 significant way: its query language is a line of semicolonseparated JavaScript expressions, instead of SQL.
Assignmentlike statements let you rename each column: to allow nice names, the text before the = assignmentoperator can have spaces and punctuation, if you want to.
The only tabular data format supported is TSV/TXT.
Like the Table Formulas app, the input formulas consists of semicolonseparated JavaScript expressions. In this case, though, the starting values for each row are the variables
n
: the number for the current rowb
: the BigInttype version of variable n
i
: the 0based index for the current row$
: record with all the current row’s values so farAs with Table Formulas, assignmentlike statements let you rename each column: to allow nice names, the text before the = assignmentoperator can have spaces and punctuation, if you want to.
Some examples are
A numberpadfriendly app which shows you a running sum:
Similar to the Quick Adder app, it uses the last 2 numbers (x, y) you’ve given it to show
x + y
x − y
x × y
x ÷ y
and y ÷ x
x^{y}
and y^{x}
(x  y) ÷ y
and (y  x) ÷ x
It also shows overall stats
Like the Quick Adder app
Input numbers directly to see many common SItoImperialtype conversions happen at once. The input box also accepts direct JavaScript calculations if you need them.
View a 2input (x, y) math function at a glance using the nowpopular Viridis quantitative
color scale. Blackcolored pixels indicate errors/NaN
values, making regions
outside the formula’s domain easy to see.
As with most of the JavaScriptformula tools on this site, remember that many members
of Math
are also available directly, which means less typing for you. Also,
don’t forget math.js is available too.
Some examples are
Like other apps multiple semicolonseparated JavaScript expressions are allowed, including naming assignments, which can include spaces and punctuation.
As with most of the JavaScriptformula tools on this site, remember that many members
of Math
are also available directly, which means less typing for you. Also,
don’t forget math.js is available too.
View/rotate f(x, y) functions as 3D wireframes. Multiple semicolonseparated JavaScript expressions are allowed to let you show multiple such functions at once, even though here the name part in assignmentlike expressions is ignored.
As with most of the JavaScriptformula tools on this site, remember that many members
of Math
are also available directly, which means less typing for you. Also,
don’t forget math.js is available too.
Show colored bubbles from a table with latitudelongitude columns on a map of the world. Only TSV/TXT files with a header line are supported.
Latitude and Longitude columns are autodetected by trying to match any of the following potential column names caseinsensitively
If a value column is chosen from the control at the top, bubble areas will show with the correct proportions relative to each other.
This app lets you view multiple webpages sidebyside, using any URL you want. You can choose how many rows and columns to use per screenful, then paste your URLs one per line in the textarea. You can then bookmark your permalinks for later viewing. That’s it.
Run WebGL fragment shaders live: press Ctrl+Enter to update the display. There’s a status bar at the top of the page above the code input box, with success/failuretype feedback showing any syntax errors you may have.
View all your cells from TSV files as colorcoded minitiles. Hovering over the values/tiles for each row will show the textline it’s from, along with its line number.
A basic highdefinition screen (1920×1080) gives you enough pixels to see between 645,000 and 1.25 million values at once, depending on how many values per row your table has. A colorcoded legend is at the top of the app for reference.
Play your favorite songs in shuffle mode
The unusual requirement for full paths in playlists is because browsers don’t share the fullpath from where dragdropped files come from.
The reason for this app not working directly from any website, is browsers not liking requests to play files from sources with a different protocol than page’s own (i.e. https:// and file:///, which is where your audio files presumably are). I guess a local http(s) webserver serving your audio files should work, but that’s overkill just to play songs.
If you try to use this app directly from the site, you’ll see an error mentioning that security restriction on the browser’s console. Once again, save it as a complete webpage locally, and use that instead.
Mix multiple sine waves and play them as sounds: up to a dozen tones are available, each of which is controlled by its own panel, which includes
If you have a multimedia keyboard, you can use the play/pause key instead of the big play button. Last but not least, watch your ears: some sounds may be too loud and/or highpitched for comfort.
Play handcoded sounds/tunes using JavaScript. Your code must export a callback function so the audio system can use it, like so
export function dsp(t, i) { return Math.sin(2 * Math.PI * 600) }
The callback has to return/generate a mono sample each time it’s called
t
is the time in seconds as a float, and starts at 0i
is the (optional) 0based integer sample numberRemember, you need to export the callback and nothing else for things to work.
Reads text to you using a speechsynthesizer
Pick multiple random values/numbers at once, which includes items from a list: you can drag/drop a text file to have the lines/items typed out for you on the big textarea to the side.
Clean/convert data from/to common tabulardata formats, as shown below
format  description  convert from 
convert to 
more info 

CSV  CommaSeparated Values  ✓  ✓ 

TSV  TabSeparated Values  ✓  ✓  the most spaceefficient among the formats supported 
JSON  JavaScript Object Notation  ✓  ✓  only arrays of flat records/objects are valid input 
JSONL  JSON Lines  ✓  ✓  only flat records/objects are valid input 
SQL  Structured Query Language  ✗  ✓ 

HTML  HyperText Markup Language  ✗  ✓ 

View the structure of JSON data, no matter their “shape”. Any nesting in the data will show as nested boxes. Note: array indices are shown starting from 0, as expected when dealing with JSON/JavaScript.
Run Linux shelllike commands, incuding command pipes. Since this is a fake environment, there are no real files nor folders, except for the simulated “bin” folder and its contents: this is mostly to expose the source code for the commands.
On that note, a good example for a piped command is
ls bin  sed '1d; s/(.+)/\/bin\/$1/'  xargs  cat
which concatenates the sources for all commands available to run.
feature  notes  

✓  pipes  
✓  literal quoting with 's  
✓  escapablequoting with "s  
✓  backslash escaping  only inside doublequoted arguments 
✓  comments  useful for memos in the command history, to remind you why you ran some specific command 
~  standard error  shows only first unrecoverable error 
✗  aliases  
✗  semicolonseparated sequencing  
✗  files and folders  only a fake readonly /bin/ folder, so you can see which commands are available using “ls A bin” 
✗  filepath expansion of *s (globs)  there are no files/folders to use anyway 
✗  stream redirections  
✗  heredoc standard input  
✗  variables 
Commands available, most of them missing minor functionality, include
A multiyear timeline of currency exchange rates relative to the Canadian Dollar. By default 4 currencies are shown: US Dollar, Mexican Peso, Euro, and UK Pound.
To show other currencies instead, handedit the URL adding a # (hash), followed by
commaseparated 3letter currency codes. For example, a URL ending as #usd,try,aud
will show the US Dollar, the Turkish Lira, and the Australian Dollar. Currency codes can
also be in capital letters if you want.
Data are official from the Bank of Canada with daily updates, except weekends. Below are the currencies its JSON datafeed includes, along with their codes
Australian Dollar  AUD  Russian Ruble  RUB 
Brazilian Real  BRL  Saudi Riyal  SAR 
Chinese Renminbi  CNY  Singapore Dollar  SGD 
European Euro  EUR  South African Rand  ZAR 
Hong Kong Dollar  HKD  South Korean Won  KRW 
Indian Rupee  INR  Swedish Krona  SEK 
Indonesian Rupiah  IDR  Swiss Franc  CHF 
Japanese Yen  JPY  Taiwanese Dollar  TWD 
Mexican Peso  MXN  Turkish Lira  TRY 
New Zealand Dollar  NZD  UK Pound Sterling  GBP 
Norwegian Krone  NOK  US Dollar  USD 
Peruvian New Sol  PEN 
Script module which defines a few handy Mathrelated JavaScript constants/functions which several apps on this site can then use directly
Math  most fields of Math object are made available directly; function log is ln 
eu: number  Euler’s number (e) 
pi: number  ratio of circumference over diameter 
tau: number  double of pi 
floor(x: number, dec: number): number  floor a number to the number of decimal digits given 
floorby(x: number, by: number): number  quantized floor function, using the gridsize given 
round(x: number, dec: number): number  round a number to the number of decimal digits given 
sinc(x: number): number  the sinc function 
reldiff(x: number, y: number): number  calculate the relative difference between 2 numbers 
scale(x: number, dmin: number, dmax: number, rmin: number, rmax: number ): number 
linearlytranslate a number from its continous domain the to the continuous range given 
mix(x, y, k: number): number  mix 2 numbers using the mixing factor given 
length(x: number[]): number  the Euclidean length of a numeric array 
dot(x: number[], y: number[]): number  calculate the dotproduct of 2 numeric arrays 
degrees(rad: number): number  turn angular radians into angular degrees 
radians(deg: number): number  turn angular degrees into radians 
lcm(x: number, y: number): number  the least commonmultiple of 2 numbers 
gcd(x: number, y: number): number  the greatest commondivisor of 2 numbers 
logistic(x: number): number  the standard logistic function 
lgamma(x: number): number  the naturallogarithm of the gamma function 
lbeta(x: number): number  the naturallogarithm of the beta function 
gamma(x: number): number  the gamma function 
beta(x: number): number  the beta function 
factorial(x: number): number  calculate the factorial; actually rounds Γ(x + 1) 
dbinom(x, n, p: number): number  calculates P(X = x) for binomial distributions 
pbinom(x, n, p: number): number  calculates P(X ≤ x) for binomial distributions 
sum(x: number[]): number  add all the items in an array 
mul(x: number[]): number  multiply all the items in an array 
summation(a: number, b: number, f: (x: number) => number ): number 
sum of function results using all integers in [a...b] 
product(a: number, b: number, f: (x: number) => number ): number 
product of function results using all integers in [a...b] 
median(x: number[]): number  find the median of a numeric array already sorted in increasing order and without nan values 
quartiles(x: number[]): number[] 
get the 5number summary of a numeric array already sorted in increasing
order and without nan values; the returned array items are the

summarize(x: number[], bias: number): { min: number, max: number, n: number, sum: number, mean: number, geomean: number, sd: number, invalid: number, } 
get various numeric summaries of a numeric array already sorted in increasing
order and without nan values; the other input is the biascorrection
parameter, where commonlyused values are

iota(n: number): number[]  make an array of numbers from 1 to the integer number given 
sort(x: number[]): number[]  sort a numeric array in increasing order 
revsort(x: number[]): number[]  sort a numeric array in decreasing order 
kernels.epa(x: number): number  the Epanechnikov kernel function 
kernels.tricube(x: number): number  the tricube kernel function 
kernels.gaussian(x: number): number  the gaussian kernel function 
pick(x: number[]): number  pick a random item from a nonempty array 
fix(x: any, decimals: number): string  morepermissive alternative to Number.toFixed, since both numbers and strings are allowed 
format(x: number, dec: number): string  convenient way to format numbers into strings with comma separators and the number of decimals given 
parseNumber(s: string): number  morepermissive alternative to Number.parseFloat, since it allows a Dollarsign at the start or after +/, as well as digitgrouping commas 
Script module which defines a few handy JavaScript functions which some apps on this site can then use directly
extname(s: string): string  get a filepath’s extension without the leading dot 
dirname(s: string): string  get a filepath’s directory/folder part 
basename(s: string): string  get a filepath’s filename part, without any folder names 
hms2s(time: string): number  turn hours:minutes:secondstype strings (hh:mm:ss) into seconds 
s2hms(sec: number): string  turn seconds into hours:minutes:secondstype strings (hh:mm:ss) 
mdy2ymd(date: string): string  turn monthdayyear (mmddyyyy) strings into yearmonthday (yyyymmdd) ones 
dmy2ymd(date: string): string  turn daymonthyear (ddmmyyyy) strings into yearmonthday (yyyymmdd) ones 
ymd2n(date: string): number  turn yearmonthday strings into floatingpoint years 
cycle(row, col: number, ...v: any[][]): any  index a fake table using 0based row/column indices, where each row repeats each of its items enough times to match all variations of later columns: the last argument isn’t an array of arrays, but a succession of variablelength flat arrays each describing the items for each column 
Script module which defines a few handy country/geographyrelated JavaScript functions which some apps on this site can then use directly
iso2(place: string): string  turn country names (or common synonym) into its official 2letter ISO country code; ISO2 codes are returned as themselves 
iso3(place: string): string  turn country names (or common synonym) into its official 3letter ISO country code; ISO3 codes are returned as themselves 
country(place: string): string  turn a country’s synonyms into the official name; official names are returned as given 
continent(place: string): string  get a country’s continent; common countryname synonyms are handled automatically 
flag(place: string): string  get a country’s flag as the URL source for a png picture (example: United States => US.png); common countryname synonyms are handled automatically; when used in Visual SQL and Table Formulas, actual flag pictures (hosted from this site) will show up in cells 