Most unscramblers make you work one word at a time. This one — the batch member of our word unscramblers family — takes up to ten scrambled words at once. Paste them in, one per line, and each word is unscrambled in a single run: its full anagrams are called out first, then every shorter word hiding inside it, with Scrabble scores and counts for each. It is built for the situations where jumbled words arrive in bunches — daily jumble puzzles with four scrambles and a final, homework lists, puzzle-book pages, and worksheets. Everything runs in your browser against our 359,039-word list.
How the batch unscrambler works
Each line you paste is treated as its own rack of tiles. The tool checks it against the whole word list and keeps every word whose letters can be covered by that line’s tiles, letting blank tiles — typed as ? — stand in for missing letters. Words that use every letter of the line are its full unscrambles, and they are listed first because they are usually what a puzzle is asking for. The rest follow grouped by length, each with its Scrabble score, so you can also see the best shorter plays a long scramble contains. To keep the page readable, each word shows its top 120 results; the single-word tool linked below shows the complete list when you need it.
How to use it
Type or paste one scrambled word per line — order does not matter, capitals are fine, and stray spaces are ignored. Press Unscramble All. Each word gets its own section headed by the word you typed and its total result count, so a worksheet of ten scrambles reads like an answer key. If one line has no full unscramble, its shorter words still appear, which usually means a letter was copied down wrong — the contained words make the mistake easy to spot.
A worked example
Feed it three lines — listen, rainbow and tac — and it answers all three at once. Listen produces 156 words; its full unscrambles include listen, silent, enlist, inlets and tinsel — perfect anagrams of each other. Rainbow produces 189 words, topped by rainbow itself at 12 points, with handy shorter plays like baron, brain and brawn below it. Tac is the quick one: its full unscrambles are act and cat. Three puzzles, one click, nothing retyped.
When batch unscrambling beats one-at-a-time
The classic case is the daily jumble: four scrambled words plus circled letters that feed a final answer. Unscrambling all four together keeps the whole puzzle on one screen, and the full-anagram callouts give you the circled letters immediately. Teachers use it to check anagram worksheets in one pass instead of ten. Word-game players use it after a session to review several racks at once and see the plays they missed. And anyone working through a puzzle book — where a page may hold a dozen scrambles — saves the most time of all.
Limitations worth knowing
Ten words per run is the cap, and each word shows its first 120 results; very long scrambles can have more contained words than that, in which case the overflow is counted honestly and the single-word unscrambler shows the rest. Our list is broader than any one game’s dictionary, so a few rare entries appear that official Scrabble or a specific puzzle’s answer key would not use — full unscrambles of ordinary words, like the examples above, are always safe. The tool rearranges letters; it does not correct spelling, so a line typed with a wrong letter will unscramble into the wrong neighbourhood.
Word Unscramblers – frequently asked questions
How many words can I unscramble at once?
Ten per run, one per line. Run it again for the next ten — there is no daily limit and no sign-up.
What is the difference between this and the Word Unscrambler?
The Word Unscrambler goes deep on a single rack — full results, length filters, blank handling. This page goes wide: many words, answers side by side, top results for each.
Can I use blank tiles?
Yes — type ? inside any line where a letter is unknown or blank. That letter will score zero in Scrabble points, as a real blank does.
Are the results scored?
Yes, with standard Scrabble tile values, and within each word the results are ordered longest first, then by score.
More word tools and lists
Browse the full collection on our Word Finder & Word Tools hub. Closest relatives: the single-word Word Unscrambler, Unscramble Words for whole jumbled sentences, and Unscramble Letters for tile-by-tile racks.
Embed this tool on your website — free
Copy the code below to add this working tool to your own page. A small credit link stays with it — that’s all we ask.
<h2>Word Unscramblers – Batch Mode</h2>
<p class="sub">Paste up to 10 scrambled words, one per line, and unscramble them all at once. Full anagrams are listed first for each word, then shorter words it contains. Use <strong>?</strong> for a blank tile.</p>
<label for="batch">Your scrambled words (one per line)</label>
<textarea id="batch" rows="6" placeholder="listen&#10;rainbow&#10;tac" spellcheck="false"></textarea>
<br>
<button id="go" type="button">Unscramble All</button>
<div id="status"></div>
<div id="results"></div>
</div>
<script>
var VAL = {a:1,b:3,c:3,d:2,e:1,f:4,g:2,h:4,i:1,j:8,k:5,l:1,m:3,n:1,o:1,p:3,q:10,r:1,s:1,t:1,u:1,v:4,w:4,x:8,y:4,z:10};
// Shared solver core for IlmHunt Wave 1C word tools.
// Parameterised by a letter-value table so the same logic powers the
// Wordfeud helper, Unscramble Letters, Word Cookies solver, batch
// unscrambler, sentence unscrambler and the Scrabble hub panel.
// Used verbatim inside the iframe apps and node-tested before publishing.
function ilmCounts(str) {
var c = {};
for (var i = 0; i < str.length; i++) { var ch = str[i]; c[ch] = (c[ch] || 0) + 1; }
return c;
}
// Find every word in `words` that can be built from the rack.
// rack: letters a-z plus ? or * wildcards. opts (all optional):
// { minLen, exactLen, startsWith, endsWith, contains }
// Returns [{w, s}] sorted length desc, score desc, A-Z. Wildcard-covered
// letters score 0.
function ilmSolve(rack, words, VAL, opts) {
opts = opts || {};
rack = (rack || '').toLowerCase();
var wild = 0, counts = {}, total = 0;
for (var i = 0; i < rack.length; i++) {
var ch = rack[i];
if (ch === '?' || ch === '*') { wild++; total++; }
else if (ch >= 'a' && ch <= 'z') { counts[ch] = (counts[ch] || 0) + 1; total++; }
}
var out = [];
for (var j = 0; j < words.length; j++) {
var w = words[j];
if (opts.exactLen) { if (w.length !== opts.exactLen) continue; }
else {
if (w.length < (opts.minLen || 2)) continue;
if (w.length > total) continue;
}
if (opts.startsWith && w.indexOf(opts.startsWith) !== 0) continue;
if (opts.endsWith && w.slice(w.length – opts.endsWith.length) !== opts.endsWith) continue;
if (opts.contains && w.indexOf(opts.contains) === -1) continue;
var need = ilmCounts(w), ok = true, deficit = 0, score = 0;
for (var L in need) {
var have = counts[L] || 0;
if (need[L] <= have) { score += VAL[L] * need[L]; }
else {
deficit += need[L] – have;
score += VAL[L] * have;
if (deficit > wild) { ok = false; break; }
}
}
if (ok) out.push({ w: w, s: score });
}
out.sort(function (a, b) {
return b.w.length – a.w.length || b.s – a.s || (a.w < b.w ? -1 : a.w > b.w ? 1 : 0);
});
return out;
}
// Full anagrams only: same length, same letter multiset.
function ilmFullAnagrams(word, words) {
word = (word || '').toLowerCase().replace(/[^a-z]/g, '');
if (!word) return [];
var target = ilmCounts(word), out = [];
for (var j = 0; j < words.length; j++) {
var w = words[j];
if (w.length !== word.length) continue;
var c = ilmCounts(w), same = true;
for (var L in target) { if ((c[L] || 0) !== target[L]) { same = false; break; } }
if (same) out.push(w);
}
out.sort();
return out;
}
// Tile-by-tile score breakdown for a typed word.
function ilmScoreWord(word, VAL) {
word = (word || '').toLowerCase().replace(/[^a-z]/g, '');
var parts = [], total = 0;
for (var i = 0; i < word.length; i++) {
var v = VAL[word[i]] || 0;
parts.push({ ch: word[i], v: v });
total += v;
}
return { word: word, parts: parts, total: total };
}
if (typeof module !== 'undefined') {
module.exports = { ilmSolve: ilmSolve, ilmFullAnagrams: ilmFullAnagrams, ilmScoreWord: ilmScoreWord, ilmCounts: ilmCounts };
}
var WORDLIST_URL = 'https://ilmhunt.com/wp-content/uploads/2026/10/wordlist.txt';
var WORDS = null, LOADING = false;
function sendH(){ try { parent.postMessage({wpcId: 5213, wpcH: document.body.scrollHeight + 16}, '*'); } catch (e) {} }
window.addEventListener('load', sendH);
function st(msg){ document.getElementById('status').textContent = msg; }
function ensureWords(cb){
if (WORDS) { cb(); return; }
if (LOADING) { return; }
LOADING = true; st('Loading the word list (359,039 words)…');
fetch(WORDLIST_URL).then(function(r){ return r.text(); }).then(function(t){
WORDS = t.split(/\r?\n/).filter(function(x){ return x.length > 0; });
st('Word list ready – ' + WORDS.length.toLocaleString('en-US') + ' words.');
cb();
}).catch(function(){
LOADING = false;
st('Sorry – the word list could not be loaded. Check your connection and try again.');
});
}
function groupHtml(res, withScore){
if (!res.length) return '<p class="none">No words found. Check your letters and try again.</p>';
var html = '', curLen = -1;
res.forEach(function(x){
if (x.w.length !== curLen) {
if (curLen !== -1) html += '</div>';
curLen = x.w.length;
var n = 0; res.forEach(function(y){ if (y.w.length === curLen) n++; });
html += '<div class="grp"><h3>' + curLen + ' letters – ' + n + ' word' + (n === 1 ? '' : 's') + '</h3>';
}
html += '<span class="chip">' + x.w + (withScore ? '<sup>' + x.s + '</sup>' : '') + '</span>';
});
return html + '</div>';
}
function run(){
ensureWords(function(){
var lines = document.getElementById('batch').value.split(/\r?\n/)
.map(function(x){ return x.replace(/[^a-zA-Z?*]/g, '').toLowerCase(); })
.filter(function(x){ return x.length >= 2; }).slice(0, 10);
if (!lines.length) { st('Enter at least one scrambled word of 2+ letters.'); return; }
var html = '', total = 0;
lines.forEach(function(line){
var res = ilmSolve(line, WORDS, VAL, {});
total += res.length;
var full = res.filter(function(x){ return x.w.length === line.replace(/[?*]/g, '').length + (line.match(/[?*]/g) || []).length; });
html += '<div class="grp"><h3>' + line + ' – ' + res.length.toLocaleString('en-US') + ' words</h3>';
if (full.length) {
html += '<p class="mut">Full unscrambles: ' + full.map(function(x){ return '<strong>' + x.w + '</strong>'; }).join(', ') + '</p>';
}
var show = res.slice(0, 120);
show.forEach(function(x){ html += '<span class="chip">' + x.w + '<sup>' + x.s + '</sup></span>'; });
if (res.length > 120) html += '<p class="mut">… and ' + (res.length – 120).toLocaleString('en-US') + ' shorter words not shown. Use the single-word Unscrambler for the full list.</p>';
html += '</div>';
});
document.getElementById('results').innerHTML = html;
st(lines.length + ' word' + (lines.length === 1 ? '' : 's') + ' unscrambled – ' + total.toLocaleString('en-US') + ' total results.');
sendH();
});
}
document.getElementById('go').addEventListener('click', run);
</script>
</body>
</html>
" id="wpc-frame-5213" class="wpc-embed-frame" style="width:100%;border:0;display:block;overflow:hidden;" scrolling="no"></iframe></div>
<p><script>(function(){var f=document.getElementById('wpc-frame-5213');function wpcResize(h){if(f){f.style.height=(h+24)+'px';}}window.addEventListener('message',function(e){if(e && e.data && e.data.wpcId===5213 && e.data.wpcH){wpcResize(e.data.wpcH);}});if(f){f.addEventListener('load',function(){wpcResize(460);});}})();</script></p>
<p><a href="https://ilmhunt.com/word-unscramblers/" target="_blank" rel="noopener">Word Unscramblers — Unscramble Many Words at Once</a> by <a href="https://ilmhunt.com/" target="_blank" rel="noopener">IlmHunt</a> — free online tools</p>
