The List Compare tool performs set operations on two lists, finding their intersection, union, and differences. Includes automatic delimiter detection, case-insensitive comparison, optional fuzzy matching, and detailed statistics including Jaccard similarity index.
Results vary by operation selected:Intersection: One item per line, sorted alphabeticallyOnly in A / Only in B: Unique items from that list, sortedUnion: All unique items combined, sortedStatistics: Detailed breakdown with Jaccard similarityMetadata line:
function levenshtein(a: string, b: string): number { if (a === b) return 0; if (a.length === 0) return b.length; if (b.length === 0) return a.length; const matrix: number[][] = Array.from({ length: b.length + 1 }, (_, i) => [i]); for (let j = 0; j <= a.length; j++) matrix[0][j] = j; for (let i = 1; i <= b.length; i++) { for (let j = 1; j <= a.length; j++) { const cost = a[j - 1] === b[i - 1] ? 0 : 1; matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost); } } return matrix[b.length][a.length];}
The List Compare tool was extracted from Vennom and adapted for Kayston’s Forge. It uses case-preserving deduplication (first-seen casing is retained in output).
Fuzzy matching is disabled by default because it’s computationally expensive. For lists larger than 5,000 items, fuzzy matching is automatically skipped to prevent UI thread lockup.
Very large lists (over 100K items) may cause performance issues. Consider splitting into smaller batches or using external tools for massive dataset comparisons.