Conventions: How to Write N8N Functions

Functions in n8n are accessed using dot notation (.) directly on a variable. The variable must first be accessed from a previous node, often under the standard JavaScript Object Notation (JSON) structure.

Standard Calling Convention:$json.data_type.functionName(parameter1, parameter2)

Usage Purpose Example
Variable Access Use the dollar sign ($) to access data from the input nodes. The format is $json.variable_name. $json.string (Accesses a variable named "string")
Calling Functions Add a period (.) after the variable, followed by the function name and parentheses (). $json.number.round()
Properties Properties (like length) are called without parentheses. $json.array.length
String/Regex Parameters Any literal text or pattern must be wrapped in quotes. .split(',') or .replace('old', 'new')

The Special $now Function

The $now function is used to grab the current date and time.


📝 String Functions

These functions operate on text variables (strings), accessed via $json.string.

Function Name How to Call It What It Does Example
includes .includes('substring') Checks if the string contains a specified sequence of characters. json.string.includes('hell') returns true.
split .split('delimiter') Converts the string into an array, breaking it up wherever the delimiter is found. Splitting "Sarah, Sally" by ", " yields ["Sarah", "Sally"].
startsWith .startsWith('characters') Checks if the string begins with the specified characters. "hello!".startsWith('h e l l') returns true.
endsWith .endsWith('characters') Checks if the string ends with the specified characters. "hello!".endsWith('o!') returns true.
replaceAll .replaceAll('pattern', 'replacement') Replaces every occurrence of a pattern or substring with a new replacement string. Replacing all "L" with "W" in "Hello!" results in "Hewwo!".
length .length Returns the total number of characters in the string (not a function, but a parameter). The length of "hello!" is 6.
base64Encode .base64Encode() Encodes the string into the Base64 format (often used for API keys). Encoding "hello" yields a Base64 string.
base64Decode .base64Decode() Decodes a Base64 string back into plain text. Decoding a Base64 string yields "hello!".
concat .concat('addition') Appends one or more additional strings (or an array of strings) to the end of the current string (String addition). json.string.concat(' world') yields "Hello! world".
extractDomain .extractDomain() Pulls out the root domain name from a URL or email string. Extracts left-click.ai from nick@left-click.ai.
extractEmail .extractEmail() Extracts an email address (looks for string@domain) from a body of text. Extracts nick@left-click.ai from a large scraped text block.
extractURL .extractURL() Extracts the full URL (must include the protocol, e.g., HTTP or FTP). Extracts https://left-click.ai.
extractURLPath .extractURLPath() Extracts everything that follows the first slash after the domain name. Extracts /workflow/ID from an n8n Cloud URL.
hash .hash('algorithm') Applies a hashing algorithm (e.g., md5, sha256) to convert the string into a long hexadecimal number for security. Hashing "hello" using sha1 results in a unique hexadecimal string.
quote .quote('mark') Wraps the string in quotation marks and automatically "escapes" internal quotes with a backslash for data sanitation. Sanitizes a string containing quotes (e.g., "Nick says 'hi'").
removeMarkdown .removeMarkdown() Removes markdown formatting conventions (like # for headings). Applying to # Heading One yields Heading One.
removeTags .removeTags() Removes HTML tags (like <H1>) from the string, yielding plain text. Removes all HTML from scraped webpage data.
replace .replace('pattern', 'replacement') Replaces only the first instance of a specified character or substring. Replacing "L" with "W" in "Hello!" yields "Hewlo!".
replaceSpecialCars .replaceSpecialCars() Removes special accented or marked characters that can cause issues with older APIs. Inputting a string with é yields the same string with e.
slice .slice(start, end) Extracts a substring by specifying the starting and optional ending index (zero-indexed). Slicing "hello!" from 0 to 4 yields "hell".
substring .substring(start, end) Identical function to slice. json.string.substring(0, 4) yields "hell".
trim .trim() Removes white space (spaces, tabs, new lines) from both the beginning and the end of the string. Trimming " test string " yields "test string".
trimEnd .trimEnd() Removes only the trailing white space from the end of the string. Trimming end of " test " yields " test".
trimStart .trimStart() Removes only the leading white space from the start of the string. Trimming start of " test " yields "test ".
urlEncode .urlEncode() Converts illegal URL characters (like spaces) into URL-safe encoding (e.g., %20). URL encoding a string like "blog post with awesome name".
urlDecode .urlDecode() Converts URL-safe encoded characters back into their original form. Decoding a URL-encoded string.
indexOf .indexOf('substring') Returns the starting index (position) of the first occurrence of a substring. json.string.indexOf('l') on "hello!" yields 2.
lastIndexOf .lastIndexOf('substring') Returns the starting index (position) of the last occurrence of a substring. json.string.lastIndexOf('l') on "hello!" yields 3.
match .match(/regex/) Uses regular expressions (regex) to find and extract patterns within the string. Using regex to extract all three-letter words from a phrase.
search .search(/regex/) Uses regular expressions to return the index (position) where the first match occurs. Searching for a specific pattern using regex.
isDomain .isDomain() Validation: Checks if the string is formatted specifically as a domain name. isDomain('left-click.ai') returns true.
isEmail .isEmail() Validation: Checks if the string is formatted as an email address. isEmail('nick@left-click.ai') returns true.
isEmpty .isEmpty() Validation: Checks if the string has a length of zero. isEmpty('') returns true.
isNot(E)mpty .isNot(E)mpty() Validation: Checks if the string has a length greater than zero. isNot(E)mpty('test') returns true.
isNumeric .isNumeric() Validation: Checks if the string contains only numeric characters. isNumeric('123.4') returns true.
isURL .isURL() Validation: Checks if the string is a complete URL (including protocol). isURL('<https://left-click.ai>') returns true.
toLowerCase .toLowerCase() Converts all characters in the string to lowercase. Converts "Hello" to "hello".
toSentenceCase .toSentenceCase() Capitalizes only the first letter of the entire string. Converts "ways to make money" to "Ways to make money".
toSnakeCase .toSnakeCase() Converts the string into variable names using underscores (_) instead of spaces. Converts "make money online" to "make_money_online".
toTitleCase .toTitleCase() Capitalizes the first letter of all major words. Converts a title into standard Title Case.
toUpperCase .toUpperCase() Converts all characters in the string to uppercase. Converts "hello" to "HELLO".
parseJson .parseJson() Conversion: Converts a JSON-formatted string into an accessible JavaScript object data type. Parses string '{"name": "Peter"}' into an object {name: Peter}.
toBoolean .toBoolean() Conversion: Converts the string "1" to true or "0" to false (Boolean data type). String "1" converts to true.
toDateTime .toDateTime() Conversion: Converts a date/time string into the standardized Luxon datetime object format. Converts "01/31/2025" into a Luxon datetime object.
toNumber .toNumber() Conversion: Converts a string containing numeric characters into a Number data type, enabling math. Converts string "123504" into a number, allowing addition (e.g., + 5).