New Community Node: n8n-nodes-random — Random Selection for n8n Workflows

Hi everyone!

I want to share my latest community node: n8n-nodes-random — a random picker node for n8n workflows.

What does it do?

n8n has great nodes for filtering, sorting, and transforming items. But sometimes you just need to pick one at random. A random winner from a list of entries. A random agent to assign a ticket to. A random value from an array field. There is no native node for that, so I built one.

How it works

The node has two output pins:

Picked — the randomly selected items exit here
Remaining — everything that was not picked exits here

It works in two modes:

Input Items mode — all items flowing into the node form the pool. The node picks N of them randomly and sends them to Picked. Everything else goes to Remaining.

List Field mode — each item has an array field (for example a tags field or an options field). The node picks N values from that array and writes the result into a new field on the item. Supports drag and drop from the n8n data panel and accepts expressions like {{ $json.options }} directly.

Every picked item gets a _pick metadata object injected automatically:

Field | Description
$json._pick.poolSize | Total number of candidates in the pool
$json._pick.pickCount | How many items were picked
$json._pick.allowDuplicates | Whether duplicates were enabled
$json._pick.seeded | Whether a fixed seed was used

Key features

Configurable pick count — defaults to 1, set it to any number
Duplicates control — allow or block the same item from being picked twice
Random seed — set an integer seed for reproducible, deterministic picks. Same seed plus same pool always produces the same result. Great for testing.
Drag and drop support — in List Field mode, drag any array field from the n8n data panel straight into the List Field input
Two clean output pins — branch your workflow naturally after the pick
Zero runtime dependencies
Works with any upstream node — HTTP Request, Postgres, Google Sheets, webhooks, anything

Real use cases

Pick a random winner from a list of contest entries

HTTP Request (fetch entries) → Random (Pick Count: 1) → Send winner email
|
Remaining → archive or ignore

Randomly assign support tickets to agents

Postgres (get open tickets) → Random (Pick Count: 3) → Assign to agent
|
Remaining → back to queue

Rotate random content in a scheduled workflow

Schedule Trigger → Google Sheets (get quotes) → Random (Pick Count: 1) → Send daily quote email

Pick a random value from an array field on each item

Input: { “name”: “Alice”, “options”: [“A”, “B”, “C”, “D”] }
Random (List Field: options, Output Field: selected, Pick Count: 1)
Output: { “name”: “Alice”, “options”: […], “selected”: “B” }

Installation

npm install n8n-nodes-random

Or via Settings > Community Nodes > Install and search for n8n-nodes-random. Restart n8n after installing.

Requirements

n8n version 0.198.0 and above
Self-hosted n8n
No external accounts or credentials needed

Why I built this

I kept running into situations in my n8n workflows where I just needed to pick something at random. The workarounds I found involved Code nodes with Math.random() scattered across the canvas, which worked but felt messy and was hard to hand off to anyone else.

A dedicated node that wires up like anything else in n8n and handles both item-level and field-level picking cleanly felt worth building.

Links

GitHub: GitHub - victor-folorunso/n8n-nodes-random · GitHub
npm: https://www.npmjs.com/package/n8n-nodes-random
License: MIT

This is v0.1.2 so feedback is very welcome. If something breaks or a use case is not covered, open an issue on GitHub or reply here and I will iterate quickly.

Thanks for being a great community!