Steam Wishlist Matcher

Match your game keys with friends' wishlists

1. Your Game Keys

Import from Humble Bundle

To import your Humble Bundle keys automatically:

  1. Log in to Humble Bundle in your browser
  2. Open browser DevTools (F12 → Application/Storage tab)
  3. Find "Cookies" → "https://www.humblebundle.com"
  4. Copy the value of _simpleauth_sess cookie
  5. Paste it below and click "Authenticate"

Note: Your cookie is stored only in your browser session and is not saved permanently.

Paste your games (one per line: "Game Title, Key" or just "Game Title")

2. Friends' Wishlists

Import from Steam

To automatically fetch your friends' wishlists:

  1. Sign in with your Steam account using the button below
  2. Your friends list will appear
  3. Click "Fetch Wishlist" or "Update Wishlist" to import their games
Manual import (if not using Steam)
  1. Visit your friend's Steam wishlist page (must be set to "Friends Only" or "Public")
  2. Open browser console (F12 → Console tab)
  3. Copy and paste this code, then press Enter:
    (async function() {console.log('🔍 Extracting wishlist data...');if (typeof g_rgWishlistData !== 'undefined' && g_rgWishlistData) {try {const games = Object.values(g_rgWishlistData).map((game) => game.name);if (games.length > 0) {copy(games.join(' | '));console.log('✅ Copied', games.length, 'games from internal data!');return;}} catch (e) {console.log('⚠️ Could not access internal data, trying alternative method...');}}console.log('📜 Starting game capture...');console.log('⏳ You have 60 seconds to scroll to the bottom of the wishlist!');console.log('💡 Scroll slowly - games will be captured as they appear');const capturedGames = new Set();const selectors = ['a.Fuz2JeT4RfI-','.wishlistRow .title','.wishlist_row .title','[class*="StoreSaleWidgetTitle"]','.gameListRowItemName'];const captureInterval = setInterval(() => {for (const selector of selectors) {const elements = document.querySelectorAll(selector);if (elements.length > 0) {elements.forEach(el => {const gameName = el.textContent?.trim();if (gameName) {capturedGames.add(gameName);}});break;}}}, 100);let lastCount = 0;const progressInterval = setInterval(() => {if (capturedGames.size !== lastCount) {console.log(` 📊 Captured ${capturedGames.size} games so far...`);lastCount = capturedGames.size;}}, 2000);await new Promise(r => setTimeout(r, 60000));clearInterval(captureInterval);clearInterval(progressInterval);if (capturedGames.size === 0) {console.error('❌ No games found. This wishlist might be empty or private.');alert('❌ No games found. This wishlist might be empty or private.');} else {const gamesList = Array.from(capturedGames);const gamesText = gamesList.join(' | ');const textarea = document.createElement('textarea');textarea.value = gamesText;textarea.style.position = 'fixed';textarea.style.top = '0';textarea.style.left = '0';textarea.style.width = '2em';textarea.style.height = '2em';textarea.style.padding = '0';textarea.style.border = 'none';textarea.style.outline = 'none';textarea.style.boxShadow = 'none';textarea.style.background = 'transparent';document.body.appendChild(textarea);textarea.focus();textarea.select();let copySucceeded = false;try {copySucceeded = document.execCommand('copy');} catch (err) {console.error('Copy failed:', err);}document.body.removeChild(textarea);console.log(`✅ Copied ${gamesList.length} unique games to clipboard!`);if (copySucceeded) {alert(`✅ Success! Copied ${gamesList.length} games to clipboard.\n\nNow paste them into the wishlist textarea with format:\nFriendName: [paste here]\n\nNote: Games are separated by pipes (|)`);} else {prompt(`⚠️ Auto-copy failed. Please manually copy this text (Ctrl+C or Cmd+C):`, gamesText);}}})();
  4. Scroll slowly to the bottom (you have 60 seconds). Games are captured as you scroll!
  5. After 60 seconds, game names will be copied automatically to your clipboard
  6. Paste below with friend's name in format: FriendName: Game1 | Game2 | Game3

3. Matches