<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>List Tools Category - Free Online Tools - Imediacto</title>
	<atom:link href="https://imediacto.com/category/tools/list-tools/feed/" rel="self" type="application/rss+xml" />
	<link>https://imediacto.com/category/tools/list-tools/</link>
	<description>Free Online Tool Set for Text and HTML</description>
	<lastBuildDate>Tue, 04 Nov 2025 18:27:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://imediacto.com/wp-content/uploads/2020/04/cropped-favicon-32x32.png</url>
	<title>List Tools Category - Free Online Tools - Imediacto</title>
	<link>https://imediacto.com/category/tools/list-tools/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Compare Two Lists ~ Free List Comparison Tool</title>
		<link>https://imediacto.com/tools/list-tools/compare-two-lists/</link>
					<comments>https://imediacto.com/tools/list-tools/compare-two-lists/#comments</comments>
		
		<dc:creator><![CDATA[Dante]]></dc:creator>
		<pubDate>Tue, 09 Feb 2021 15:13:34 +0000</pubDate>
				<category><![CDATA[List Tools]]></category>
		<category><![CDATA[Text Tools]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[List comparison tool]]></category>
		<guid isPermaLink="false">https://imediacto.com/?p=266</guid>

					<description><![CDATA[<p>This list comparison tool allows you to compare two lists to be able you analyze SET operations (difference, intersection, union, symmetric difference).</p>
<p>The post <a href="https://imediacto.com/tools/list-tools/compare-two-lists/">Compare Two Lists ~ Free List Comparison Tool</a> appeared first on <a href="https://imediacto.com">Free Online Tools - Imediacto</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div class="boot">
        <p>This <strong>list comparison tool</strong> allows you to <strong>compare two lists</strong> (arrays) to be able you analyze the <strong>difference between the two lists</strong>.
            The program receives lists of the type string or number and after starting the comparison it is possible to sort the results.</p>

        <!-- Results -->
        <div class="row">
            <div class="col-12 mt-2 mb-2">
                <h2>Inputs</h2>
            </div>
        </div>

        <div class="row">
            <div class="col-md-6 col-12 col-sm-12 mb-3">
                <p class="strong font-topic">Input data structure</p>
                <div class="custom-control custom-radio">
                    <input type="radio" id="sep1" name="items-separation" value="lines" class="custom-control-input"
                        checked>
                    <label class="custom-control-label" for="sep1">From lines</label>
                </div>
                <div class="custom-control custom-radio">
                    <input type="radio" id="sep2" name="items-separation" value="commas" class="custom-control-input">
                    <label class="custom-control-label" for="sep2">Separeted by commas</label>
                </div>
                <div class="custom-control custom-radio">
                    <input type="radio" id="sep3" name="items-separation" value="spaces" class="custom-control-input">
                    <label class="custom-control-label" for="sep3">Separeted by space</label>
                </div>
            </div>
            <div class="col-md-6 col-12 col-sm-12 mb-3">
                <p class="strong font-topic">Input data type</p>
                <div class="custom-control custom-radio">
                    <input type="radio" id="string" name="data-type" value="string" class="custom-control-input"
                        checked>
                    <label class="custom-control-label" for="string">String</label>
                </div>
                <div class="custom-control custom-radio">
                    <input type="radio" id="number" name="data-type" value="number" class="custom-control-input">
                    <label class="custom-control-label" for="number">Number</label>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-12 mb-3 hide-on-xs">
                <div class="div-btn mr-1 mr-2" title="Switch view">
                    <i class="fa fa-list" onclick="toggleLines()"> <span>Toggle layout view</span></i>
                </div>
            </div>
            <div class="col-sm-6 mb-3">
                <p class="strong font-topic">List A</p>
                <textarea id="input-a" name="input-a" cols="30" rows="10" placeholder="Insert items for list A"></textarea>
            </div>
            <div class="col-sm-6 mb-3">

                <p class="strong font-topic">List B</p>
                <textarea id="input-b" name="input-a" cols="30" rows="10" placeholder="Insert items for list B"></textarea>
            </div>
        </div>
        <div class="row">
            <div class="col-md-6 col-sm-12 mb-3">
                <p class="strong font-topic">Handle data as</p>
                <div class="custom-control custom-radio">
                    <input type="radio" id="set" name="set-or-list" value="set" class="custom-control-input" checked>
                    <label class="custom-control-label" for="set">As a set (no repeated elements)</label>
                </div>
                <div class="custom-control custom-radio">
                    <input type="radio" id="list" name="set-or-list" value="list" class="custom-control-input">
                    <label class="custom-control-label" for="list">As a list (with repeated elements)</label>
                </div>
            </div>
            <div class="col-md-6 col-sm-12 mb-3">
                <p class="strong font-topic">Output data separetad by</p>
                <div class="custom-control custom-radio">
                    <input type="radio" id="output1" name="items-separation-output" value="lines"
                        class="custom-control-input" checked>
                    <label class="custom-control-label" for="output1">By lines</label>
                </div>
                <div class="custom-control custom-radio">
                    <input type="radio" id="output2" name="items-separation-output" value="commas"
                        class="custom-control-input">
                    <label class="custom-control-label" for="output2">By commas</label>
                </div>
                <div class="custom-control custom-radio">
                    <input type="radio" id="output-" name="items-separation-output" value="spaces"
                        class="custom-control-input">
                    <label class="custom-control-label" for="output-">By space</label>
                </div>
            </div>
        </div>
        <div class="row mb-3">
            <div class="col-sm-12">
                <div class="flex space-between mt-2">
                    <button onclick="applyDiffImproved()" class="btn btn-success mr-2">
                        <i class="fa fa-chevron-right"></i> Compare lists
                    </button>
                    <div class="flex">
                        <!-- TODO :: aplicar button.soft em todos os divs que fazem o papel de botão -->
                        <button class="soft mr-1" onclick="sortAllItems(false)" title="Sort all items asc" aria-label="Sort all items desc">
                            <i class="fa fa-sort-amount-asc"> <span class="hide-on-xs">Sort all asc</span></i>
                        </button>
                        <button class="soft mr-1" onclick="sortAllItems(true)" title="Sort all items asc" aria-label="Sort all items asc">
                            <i class="fa fa-sort-amount-desc"> <span class="hide-on-xs">Sort all desc</span></i>
                        </button>
                    </div>
                </div>
            </div>
        </div>

        <!-- Results -->
        <div class="row">
            <div class="col-12">
                <h2>Results</h2>
            </div>
        </div>
        
        <div class="row">
            
            <!-- Only in A -->
            <div class="col-sm-6 mt-3">
                <div class="flex mb-2">
                    <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-a-minus-b.png" class="img-set" alt="Set: A minus B">
                    <p class="strong font-topic" title="A minus B">Only in list A</p>
                </div>
                <pre title="A minus B"><span id="adiffb"><span class="help-text">A diff B</span></span></pre>
                <div class="flex">
                    <button class="soft mr-1" onclick="sortItems('adiffb')" title="Sort items asc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-asc"></i>
                    </button>
                    <button class="soft mr-1" onclick="sortItems('adiffb', true)" title="Sort items desc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-desc"></i>
                    </button>
                    <button class="soft mr-1" onclick="copyToClipboard('adiffb', 'check1')" title="Copy output to clipboard" aria-label="Copy the output A minus B to clipboard">
                        <i class="fa fa-copy"></i>&nbsp;
                    </button>
                    <div id="check1" class="check none"></div>
                </div>
            </div>
            
            <!-- Only in B -->
            <div class="col-sm-6 mt-3">
                <div class="flex mb-2">
                    <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-b-minus-a.png" class="img-set" alt="Set: B minus A">
                    <p class="strong font-topic" title="B minus A">Only in list B</p>
                </div>
                <pre title="B minus A"><span id="bdiffa"><span class="help-text">B diff A</span></span></pre>
                <div class="flex">
                    <button class="soft mr-1" onclick="sortItems('bdiffa')" title="Sort items asc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-asc"></i>
                    </button>
                    <button class="soft mr-1" onclick="sortItems('bdiffa', true)" title="Sort items desc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-desc"></i>
                    </button>
                    <button class="soft mr-1" onclick="copyToClipboard('bdiffa', 'check2')" title="Copy output to clipboard" aria-label="Copy the output B minus A to clipboard">
                        <i class="fa fa-copy"></i>&nbsp;
                    </button>
                    <div id="check2" class="check none"></div>
                </div>
            </div>
            
            <!-- A intersection B -->
            <div class="col-sm-6 mt-3">
                <div class="flex mb-2">
                    <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-intersection.png" class="img-set" alt="Set: A intersection B">
                    <p class="strong font-topic" title="A intersection B">Common items (A &cap; B)</p>
                </div>
                <pre title="A intersection B"><span id="ainterb"><span class="help-text">Intersection ​​between A and B</span></span></pre>
                <div class="flex">
                    <button class="soft mr-1" onclick="sortItems('ainterb')" title="Sort items asc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-asc"></i>
                    </button>
                    <button class="soft mr-1" onclick="sortItems('ainterb', true)" title="Sort items desc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-desc"></i>
                    </button>
                    <button class="soft mr-1" onclick="copyToClipboard('ainterb', 'check3')" title="Copy output to clipboard" aria-label="Copy the common items to clipboard">
                        <i class="fa fa-copy"></i>&nbsp;
                    </button>
                    <div id="check3" class="check none"></div>
                </div>
            </div>

            <!-- A union B -->
            <div class="col-sm-6 mt-3">
                <div class="flex mb-2">
                    <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-union.png" class="img-set" alt="Set: A union B">
                    <p class="strong font-topic" title="A union B">All items (A &cup; B)</p>
                </div>
                <pre title="A union B"><span id="aunionb"><span class="help-text">Union of values ​​between A and B</span></span></pre>
                <div class="flex">
                    <button class="soft mr-1" onclick="sortItems('aunionb')" title="Sort items asc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-asc"></i>
                    </button>
                    <button class="soft mr-1" onclick="sortItems('aunionb', true)" title="Sort items desc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-desc"></i>
                    </button>
                    <button class="soft mr-1" onclick="copyToClipboard('aunionb', 'check4')" title="Copy output to clipboard" aria-label="Copy the union output to clipboard">
                        <i class="fa fa-copy"></i>&nbsp;
                    </button>
                    <div id="check4" class="check none"></div>
                </div>
            </div>
            <!-- Symmetric difference -->
            <div class="col-sm-6 mt-3">
                <div class="flex mb-2">
                    <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-symmetric-difference.png" class="img-set" alt="Set: Symmetric diference between A and B">
                    <p class="strong font-topic" title="Symmetric difference">Exclusive items (A &bigtriangleup; B)</p>
                </div>
                <pre title="Symmetric difference"><span id="difference"><span class="help-text">Symmetric difference between A and B</span></span></pre>
                <div class="flex">
                    <button class="soft mr-1" onclick="sortItems('difference')" title="Sort items asc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-asc"></i>
                    </button>
                    <button class="soft mr-1" onclick="sortItems('difference', true)" title="Sort items desc" aria-label="Sort items">
                        <i class="fa fa-sort-amount-desc"></i>
                    </button>
                    <button class="soft mr-1" onclick="copyToClipboard('difference', 'check5')" title="Copy output to clipboard" aria-label="Copy the symetric difference between A and B to clipboard">
                        <i class="fa fa-copy"></i>&nbsp;
                    </button>
                    <div id="check5" class="check none"></div>
                </div>
            </div>
        </div>
        <hr>
        <section class="tips">
        <h2>Tips for Better Results</h2>
            <ul>
                <li>Paste clean text without extra spaces.</li>
                <li>Use “set” mode to ignore duplicates.</li>
                <li>Use “list” mode to include repeated items.</li>
            </ul>
        </section>
        <hr>
        <h2>How does the Compare Two Lists tool work?</h2>
        <p>It will function normally according to the rules of the sets, in Mathematics. However, in this tool, you can also choose the list option, so that it is possible to work with repeated values. The following operations are performed:</p>

        <div class="flex mt-3">
            <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-a-minus-b.png" class="img-set" alt="Set: A minus B"><h3 class="mb-0 mt-0 pb-0">A minus B</h3>
        </div>
        <p>Returns the values ​​that are present only in list A.</p>

        <div class="flex mt-3">
            <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-b-minus-a.png" class="img-set" alt="Set: B minus A"><h3 class="mb-0 mt-0 pb-0">B minus A</h3>
        </div>
        <p>Returns the values ​​that are present only in list B.</p>

        <div class="flex mt-3">
            <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-intersection.png" class="img-set" alt="Set: A intersection B"><h3 class="mb-0 mt-0 pb-0">A intersection B</h3>
        </div>
        <p>They are represented by the values ​​that occur simultaneously in the two lists.</p>

        <div class="flex mt-3">
            <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-union.png" class="img-set" alt="Set: A union B"><h3 class="mb-0 mt-0 pb-0">A union B</h3>
        </div>
        <p>They are represented by all the values ​​present in both lists.</p>

        <div class="flex mt-3">
            <img decoding="async" src="https://imediacto.com/wp-content/uploads/2021/02/set-symmetric-difference.png" class="img-set" alt="Set: Symmetric diference between A and B"><h3 class="mb-0 mt-0 pb-0">Symmetric difference</h3>
        </div>
        <p>The symmetric difference of two sets is the set of elements that are in one of the sets, but not at its intersection.</p>

        <h2>Important note</h2>

        <p>There is no limitation on the maximum number of rows allowed in a list, however, if you put in too large a volume of data, the browser may slow down or even crash for a moment.</p>
        
        <hr>
        <!-- FAQ sem JS -->
        <h2 class="mt-4 mb-3">FAQ about this Comparison List Tool</h2>

        <div class="faq-list">
            <details>
                <summary>Can I compare lists with numbers?</summary>
                <div class="faq-content">
                    Yes. Just switch the “Data Type” option to <strong>Number</strong> before clicking <em>Compare Lists</em>.
                </div>
            </details>

            <details>
                <summary>What is the maximum list size?</summary>
                <div class="faq-content">
                    There is no fixed limit. However, very large lists (thousands of lines) may slow down your browser temporarily.
                </div>
            </details>

            <details>
                <summary>Does this tool store my data?</summary>
                <div class="faq-content">
                    No. All processing happens locally in your browser — your data never leaves your device.
                </div>
            </details>

            <details>
                <summary>Can I find duplicate items between two lists?</summary>
                <div class="faq-content">
                    Yes. Use the <strong>Common items (A ∩ B)</strong> section to see all items that appear in both lists — these are your duplicates.
                </div>
            </details>

            <details>
                <summary>Is the comparison case sensitive?</summary>
                <div class="faq-content">
                    Yes. The comparison is <strong>case sensitive</strong>, meaning “Apple” and “apple” are treated as different items.
                </div>
            </details>

            <details>
                <summary>What is the difference between Union and Symmetric Difference?</summary>
                <div class="faq-content">
                    <strong>Union (A ∪ B)</strong> shows all unique items from both lists combined.  
                    <strong>Symmetric Difference (A △ B)</strong> shows items that appear in either list, but <em>not</em> in both — the unique items from each list.
                </div>
            </details>
        </div>

        <!-- JSON-LD FAQ schema for SEO -->
        <script type="application/ld+json">
        {
        "@context": "https://schema.org",
        "@type": "FAQPage",
        "mainEntity": [
                {
                "@type": "Question",
                "name": "Can I compare lists with numbers?",
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. Just switch the Data Type option to Number before clicking Compare Lists."
                }
                },
                {
                "@type": "Question",
                "name": "What is the maximum list size?",
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "There is no fixed limit. However, very large lists may slow down your browser temporarily."
                }
                },
                {
                "@type": "Question",
                "name": "Does this tool store my data?",
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "No. All processing happens locally in your browser — your data never leaves your device."
                }
                },
                {
                "@type": "Question",
                "name": "Can I find duplicate items between two lists?",
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. Use the In Both Lists (A ∩ B) section to see all items that appear in both lists — these are your duplicates."
                }
                },
                {
                "@type": "Question",
                "name": "Is the comparison case sensitive?",
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. The comparison is case sensitive, meaning 'Apple' and 'apple' are considered different items."
                }
                },
                {
                "@type": "Question",
                "name": "What is the difference between Union and Symmetric Difference?",
                "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Union (A ∪ B) shows all unique items from both lists combined, while Symmetric Difference (A △ B) shows items that appear in either list but not in both."
                }
                }
            ]
        }
        </script>
        
        <div class="notes">
            <div class="image"></div>
            <div class="message">
                <p>
                    List comparison is a recurring task among professional programmers and students.
                    If you want some new feature for this <strong>Compare Two Lists</strong> tool, let me know in the comments area.
                    Also, tell me if you found some bug, that I can fix it as soon as possible.
                </p>
                <p>
                    You can learn about how this online list tool works or contribute improving the it
                    by programming some new feature or fixing bugs. For that, go to Github on <a
                        href="https://github.com/dantovsky/Imediacto-Online-Tool-Set/tree/master/tools/008-compare-two-lists"
                        target="_blank">Github >> Compare Two Lists</a> and make a pull request. This will be great!
                </p>
            </div>
        </div>
    </div>

    <script>
        let separatorOutput = '\n';

        // Improved
        function applyDiffImproved() {

            const itemsSeparationsInput = document.querySelector('input[name="items-separation"]:checked').value
            const setOrList = document.querySelector('input[name="set-or-list"]:checked').value
            const itemsSeparationsOutput = document.querySelector('input[name="items-separation-output"]:checked').value

            // Input sepearator
            let separatorInput = '\n';
            if (itemsSeparationsInput == 'lines') {
                separatorInput = '\n';
            } else if (itemsSeparationsInput == 'commas') {
                separatorInput = ',';
            } else if (itemsSeparationsInput == 'spaces') {
                separatorInput = ' ';
            }

            // Output sepearator
            if (itemsSeparationsOutput == 'lines') {
                separatorOutput = '\n';
            } else if (itemsSeparationsOutput == 'commas') {
                separatorOutput = ', ';
            } else if (itemsSeparationsOutput == 'spaces') {
                separatorOutput = ' ';
            }

            // Set or list
            const isSet = setOrList === 'set' ? true : false

            // Get items on input textareas
            let inputA = document.getElementById('input-a').value.split(separatorInput)
            let inputB = document.getElementById('input-b').value.split(separatorInput)

            if (separatorInput == '\n') {
                inputA = inputA.filter(item => item != '')
                inputB = inputB.filter(item => item != '')
            }

            if (separatorInput == '\n' || separatorInput == ',') {
                inputA = inputA.map(item => item.trim())
                inputB = inputB.map(item => item.trim())
            } else {
                // Remove empty elements
                inputA = inputA.filter(item => item != '')
                inputB = inputB.filter(item => item != '')
            }

            aDiffB = []
            bDiffA = []
            aInterB = []

            // Passing through arrayA :: get A diff B and A inter B
            for (item in inputA) {
                if (!inputB.includes(inputA[item])) {
                    aDiffB.push(inputA[item])
                } else {
                    aInterB.push(inputA[item])
                }
            }

            // Passing through arrayB :: get B diff A
            bDiffA = inputB.filter(item => !inputA.includes(item))

            // Writing results
            if (isSet) {
                document.getElementById('adiffb').innerHTML = [...new Set(aDiffB)].join(separatorOutput)
                document.getElementById('bdiffa').innerHTML = [...new Set(bDiffA)].join(separatorOutput)
                document.getElementById('ainterb').innerHTML = [...new Set(aInterB)].join(separatorOutput)
                document.getElementById('aunionb').innerHTML = [...new Set(inputA.concat(inputB))].join(separatorOutput)
                document.getElementById('difference').innerHTML = [...new Set(aDiffB.concat(bDiffA))].join(separatorOutput)
            } else {
                document.getElementById('adiffb').innerHTML = aDiffB.join(separatorOutput)
                document.getElementById('bdiffa').innerHTML = bDiffA.join(separatorOutput)
                document.getElementById('ainterb').innerHTML = aInterB.join(separatorOutput)
                document.getElementById('aunionb').innerHTML = inputA.concat(inputB).join(separatorOutput)
                document.getElementById('difference').innerHTML = aDiffB.concat(bDiffA).join(separatorOutput)
            }
        }

        function toggleLines() {
            const elems = document.querySelectorAll('.row > div')
            elems.forEach(elem => {
                elem.classList.contains('col-sm-12') ? elem.classList.remove('col-sm-12') : elem.classList.add('col-sm-12')
            })
        }

        function sortItems(id, isDesc = false) {

            const dataType = document.querySelector('input[name="data-type"]:checked').value
            const element = document.getElementById(id)
            let content = element.innerText.split(separatorOutput)

            if (dataType === 'string') {
                content.sort()
                if (isDesc) {
                    content = content.reverse()
                }
            } else if (dataType === 'number') {
                isDesc ? content.sort((a, b) => b - a) : content.sort((a, b) => a - b)
            }

            element.innerHTML = content.join(separatorOutput)
        }
        
        function sortAllItems(isDesc = false) {
            const operations = ['adiffb','bdiffa','ainterb','aunionb','difference']
            operations.forEach(operation => {
                sortItems(operation, isDesc)
            })
        }

        // https://www.w3resource.com/javascript-exercises/javascript-array-exercise-23.php
        // https://stackoverflow.com/questions/9229645/remove-duplicate-values-from-js-array
        // https://www.30secondsofcode.org/blog/s/copy-text-to-clipboard-with-javascript
        // https://fontawesome.com/v4.7.0/icons/

    </script></p>
<p>The post <a href="https://imediacto.com/tools/list-tools/compare-two-lists/">Compare Two Lists ~ Free List Comparison Tool</a> appeared first on <a href="https://imediacto.com">Free Online Tools - Imediacto</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://imediacto.com/tools/list-tools/compare-two-lists/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
