Skip to content
ডিফ চেকার
Tools

ডিফ চেকার

নতুন

দুটি টেক্সট তুলনা করুন এবং প্রতিটি পার্থক্য পাশাপাশি বা ইনলাইনে হাইলাইট করুন।

100% private. Your text is compared entirely in your browser — nothing is ever uploaded, so you can safely diff confidential code, contracts or data.
View
Highlight

Paste or drop text into both boxes to see the difference.

Runs entirely in your browser. Nothing is uploaded.

দুটি টেক্সট তুলনা করে প্রতিটি পার্থক্য খুঁজে বের করুন

এই ডিফ চেকার দুটি টেক্সট ব্লক তুলনা করে ঠিক কী বদলেছে তা দেখায় — বাদ পড়া অংশ লাল রঙে, নতুন যোগ হওয়া অংশ সবুজ রঙে, এবং সম্পাদিত লাইনগুলো শব্দে শব্দে চিহ্নিত করা থাকে — যাতে আপনি চোখের পলকেই পরিবর্তনগুলো দেখে নিতে পারেন। দুটি বাক্সে আপনার আসল ও পরিবর্তিত সংস্করণ পেস্ট করুন, আর তুলনা তৎক্ষণাৎ আপডেট হবে, কোনো Compare বাটন ছাড়াই, অপেক্ষা ছাড়াই। এটি গদ্য, সোর্স কোড, কনফিগ ফাইল, লগ, JSON, CSV সারি এবং প্লেইন টেক্সট যেকোনো কিছুর জন্য কাজ করে।

আপনার যদি দরকার হয় দুটি টেক্সট তুলনা, একটি চুক্তির দুটি সংস্করণ মিলিয়ে দেখা, কোনো সহকর্মী একটি ফাইলে কী বদলেছে তা যাচাই করা, বা দুটি স্প্রেডশিট কলাম মিলিয়ে নেওয়া — এই অনলাইন ডিফ টুলটি দুটি সংস্করণকে পাশাপাশি সাজিয়ে প্রতিটি সংযোজন ও বিয়োজন হাইলাইট করে দেয়।

সাইড-বাই-সাইড বা ইউনিফাইড — এবং শব্দ, অক্ষর বা লাইন স্তর

একটি সাইড-বাই-সাইড ভিউ, যা মিল থাকা লাইনগুলো দুটি কলামে সাজিয়ে দেখায়, আর একটি ইউনিফাইড (ইনলাইন) ভিউ, যা গিট ডিফের পরিচিত +/− চিহ্নসহ পরিবর্তনগুলো এক কলামে স্তূপ করে — এই দুইয়ের মধ্যে সুইচ করুন। বড় স্ক্রিনে গদ্য পড়ার জন্য সাইড-বাই-সাইড সেরা; ইউনিফাইড আরও কম্প্যাক্ট এবং ছোট ফোন স্ক্রিনে এটিই ডিফল্ট হয়ে যায়।

হাইলাইটিংয়ের গ্র্যানুলারিটিও বেছে নিন: Line গোটা বদলে যাওয়া লাইন চিহ্নিত করে, আর Word ও Character আরও গভীরে গিয়ে দেখায় ঠিক কোন টোকেনগুলো একটি সম্পাদিত লাইনের ভেতর আলাদা — তাই 'color: red' থেকে 'color: blue'-তে বদলালে শুধু 'red' বনাম 'blue' হাইলাইট হয়, পুরো লাইন নয়। Beyond Compare-এর মতো ডেস্কটপ টুলও এটি দেয়, কিন্তু সেগুলোতে ইনস্টলেশন এবং পেইড লাইসেন্স লাগে।

একটি সত্যিকারের JSON, কোড এবং CSV ডিফ চেকার

Treat as JSON অন করুন, আর দুই পাশই সামঞ্জস্যপূর্ণ ইনডেন্টেশন এবং সাজানো কি (key) সহ প্রিটি-প্রিন্ট হয়ে যায় তুলনার আগে, তাই কি-ক্রম বা ফরম্যাটিংয়ের গোলযোগ অদৃশ্য হয়ে যায় এবং শুধু আসল ভ্যালু-পরিবর্তনই দেখা যায় — ঠিক যা একটি json ডিফ চেকার-এর করার কথা। Diffchecker.com তাদের পেইড JSON ডিফ ফিচার ব্যবহার না করলে JSON-কে প্লেইন টেক্সট হিসেবেই ধরে; এখানে এটি ফ্রি।

সোর্স কোডের জন্য, গ্র্যানুলারিটি Word বা Character-এ সেট করুন এবং একটি পরিষ্কার কোড ডিফ পেতে Inline ভিউ ব্যবহার করুন, তারপর এটিকে একটি স্ট্যান্ডার্ড ইউনিফাইড-ডিফ প্যাচ হিসেবে এক্সপোর্ট করুন। Ignore whitespace, Ignore case এবং Trim trailing spaces দিয়ে অপ্রয়োজনীয় পার্থক্যগুলো দমন করে শুধু অর্থবহ সম্পাদনায় মনোযোগ দিন।

আপলোড, সোয়াপ এবং এক্সপোর্ট

পেস্ট করা ছাড়াও আপনি দুটি ফাইল আপলোড করতে পারেন বা সরাসরি ড্র্যাগ-অ্যান্ড-ড্রপ করে প্রতিটি বাক্সে ফেলে দিয়ে লাইনে লাইনে তুলনা করতে পারেন। আসল আর পরিবর্তিত পাশ উল্টে দিতে Swap ব্যবহার করুন, আর নতুন করে শুরু করতে Clear। কাজ শেষ হলে, Copy diff ক্লিপবোর্ডে একটি ইউনিফাইড-ডিফ প্যাচ রেখে দেয় এবং Download .diff এটিকে @@ হাঙ্ক হেডারসহ একটি আসল প্যাচ ফাইল হিসেবে সংরক্ষণ করে, কোনো কোড রিভিউতে যুক্ত করার বা patch কমান্ড দিয়ে প্রয়োগ করার জন্য প্রস্তুত।

ডিফ চেকার বিকল্প: আমরা কীভাবে তুলনায় দাঁড়াই

প্রধান ডিফ চেকার বিকল্পগুলো হলো Diffchecker.com, WinMerge, Beyond Compare এবং KDiff3। Diffchecker.com ব্রাউজার-ভিত্তিক, তবে ঐচ্ছিকভাবে তাদের সার্ভারে ডিফ সংরক্ষণ করে — গোপনীয় কোডের জন্য যা একটি প্রাইভেসি উদ্বেগ। তাদের ফ্রি টিয়ার টেক্সটের দৈর্ঘ্য সীমিত করে এবং স্থায়ী ডিফ লিংক, PDF এক্সপোর্ট, ও JSON-সচেতন ডিফিংয়ের জন্য টাকা নেয়। WinMerge এবং KDiff3 শক্তিশালী ডেস্কটপ টুল, কিন্তু শুধু Windows-এ চলে এবং ইনস্টলেশন লাগে। Beyond Compare সম্ভবত সেরা ডেস্কটপ ডিফ টুল, তবে খরচ $৩০–$৬০ এবং শুধু Windows, Mac ও Linux-এ চলে — ফোনে নয়।

আমাদের ফ্রি ডিফ চেকার সম্পূর্ণভাবে আপনার ব্রাউজারে চলে, কোনো সার্ভারে কিছু সংরক্ষণ করে না, কোনো ক্যারেক্টার সীমা নেই, এবং iPhone ও Android-সহ যেকোনো ডিভাইসে কাজ করে। JSON-সচেতন ডিফিং, ফাইল আপলোড, ইউনিফাইড-ডিফ এক্সপোর্ট এবং হোয়াইটস্পেস/কেস কন্ট্রোল — সবই ফ্রি, কোনো অ্যাকাউন্ট ছাড়াই। দ্রুত তুলনার জন্য — কোড স্নিপেট, কনফিগ ফাইল, চুক্তি, CSV কলাম — এটি Diffchecker-এর সমান সুবিধা দেয়, শুধু প্রাইভেসির ট্রেড-অফ ছাড়া।

ডিজাইন অনুযায়ী প্রাইভেট — কিছুই আপলোড হয় না

বেশিরভাগ তুলনা টুলের মতো নয়, এখানে কিছুই সার্ভারে পাঠানো হয় না। পুরো ডিফটি আপনার ব্রাউজারে গণনা হয়, অর্থাৎ আপনি নিরাপদে গোপনীয় কোড, চুক্তি বা যেকোনো সংবেদনশীল ডকুমেন্ট তুলনা করতে পারবেন, তা কখনো আপনার ডিভাইস ছেড়ে না গিয়েই — আর পেজ লোড হয়ে গেলে এটি অফলাইনেও কাজ করতে থাকে। সেই প্রাইভেসি, সাথে ফ্রি অসীম দৈর্ঘ্য, শব্দ- ও অক্ষর-স্তরের হাইলাইটিং, JSON-সচেতন ডিফিং এবং প্যাচ এক্সপোর্ট — এসবই এই ডিফ চেকারকে Diffchecker.com-এর মতো সার্ভার-নির্ভর বিকল্পগুলো থেকে আলাদা করে তোলে।

ডিফ অ্যালগরিদম যেভাবে কাজ করে: LCS, Myers এবং patience diff

প্রতিটি টেক্সট ডিফ টুল — এটিসহ — গড়ে ওঠে longest common subsequence (LCS) সমস্যার ওপর ভিত্তি করে: দুটি ফাইলে একই ক্রমে থাকা লাইনগুলোর দীর্ঘতম ধারাটি খুঁজে বের করা, লাইনগুলোকে পাশাপাশি থাকতে হবে না। LCS-এ থাকা লাইনগুলোই অপরিবর্তিত প্রসঙ্গ; বাকি সবকিছুই সংযোজন বা বিয়োজন। ব্রুট ফোর্সে LCS গণনা করা সূচকীয়ভাবে ব্যয়বহুল, তবে ক্লাসিক ডায়নামিক-প্রোগ্রামিং সমাধান O(n × m) সময় ও স্থানে চলে (যেখানে n এবং m প্রতিটি ফাইলের লাইন সংখ্যা), মিলে যাওয়া সাব-সিকোয়েন্সের একটি টেবিল তৈরি করে। ১৯৭৫ সালের Hunt-McIlroy অ্যালগরিদম — মূল Unix diff কমান্ডের ভিত্তি — এই ধারণাটি বাস্তব ফাইলে প্রয়োগ করে এমন একটি রেফারেন্স ইমপ্লিমেন্টেশন হয়ে ওঠে যার সাথে পরবর্তী সব টুলের তুলনা করা হয়েছে।

১৯৮৬ সালে Eugene Myers আরও দ্রুত একটি পদ্ধতি প্রকাশ করেন। Myers diff অ্যালগরিদম O(ND) সময়ে চলে — যেখানে D হলো সম্পাদনার সংখ্যা ('এডিট ডিস্ট্যান্স') — যা দুটি ফাইল একই রকম হলে বাস্তবে অনেক বেশি দ্রুত হয়, কারণ D ছোট থাকে। Git তার git diff আউটপুটের জন্য Myers-এর অ্যালগরিদম ব্যবহার করে, এবং বেশিরভাগ আধুনিক কোড-রিভিউ টুল (GitHub, GitLab, Bitbucket) একই কাজ করে। যেসব ক্ষেত্রে আউটপুটের পঠনযোগ্যতা কাঁচা গতির চেয়ে বেশি গুরুত্বপূর্ণ, সেখানে patience diff অ্যালগরিদম (Bazaar-এ ব্যবহৃত এবং Git-এ git diff --patience দিয়ে পাওয়া যায়) তুলনাটিকে সেই লাইনগুলোর ওপর নোঙর করে যা প্রতিটি ফাইলে ঠিক একবার দেখা যায়, তারপর LCS-এ ফিরে যায়। এটি এমন ডিফ তৈরি করে যা মানুষের জন্য অনুসরণ করা অনেক সহজ, যখন একটি ফাংশনের নাম বদলানো হয় বা কোড ব্লক সরানো হয়, কারণ এটি সেই 'জাঞ্জাল ম্যাচ' এড়িয়ে যায় যা LCS তৈরি করতে পারে যখন অনেক ছোট লাইন একইরকম দেখায়।

এই অ্যালগরিদমগুলো বোঝা বাস্তবে যেসব আচরণ আপনি লক্ষ্য করতে পারেন তা ব্যাখ্যা করে। দুটি প্রায় একই ফাংশন বিভ্রান্তিকর একটি ডিফ তৈরি করতে পারে যদি LCS একটি সাধারণ ক্লোজিং ব্রেস বা ছোট মন্তব্যে আটকে যায়; patience diff-এ সুইচ করলে প্রায়ই এটি ঠিকভাবে সাজিয়ে দেয়। এডিট ডিস্ট্যান্স D আরও নির্ধারণ করে তুলনাটি কতটা দ্রুত মনে হয়: খুব ভিন্ন দুটি ফাইল ডিফ করা (বড় D) সত্যিকারভাবেই দুটি প্রায় একই ফাইল ডিফ করার (ছোট D) চেয়ে বেশি CPU নেয়, যে কারণে অনেক বড় ও অনেক আলাদা টেক্সট তুলনা করা কখনো কখনো ধীর মনে হতে পারে।

ইউনিফাইড ডিফ ফরম্যাট: @@ হাঙ্ক হেডার ও প্যাচ ফাইল পড়া

ইউনিফাইড ডিফ ফরম্যাটdiff -u এবং git diff দ্বারা তৈরি — সফটওয়্যার প্যাচের সার্বজনীন ভাষা। প্রতিটি ইউনিফাইড ডিফ দুটি হেডার লাইন দিয়ে শুরু হয়: --- a/filename মূল ফাইল চিহ্নিত করে (Git-এ এর টাইমস্ট্যাম্প বা a/ প্রিফিক্সসহ) এবং +++ b/filename নতুন ফাইল চিহ্নিত করে। হেডারের পরে আসে এক বা একাধিক হাঙ্ক, প্রতিটি একটি @@ হাঙ্ক হেডার দিয়ে শুরু হয়, যার ফর্ম @@ -a,b +c,d @@। এর মানে: মূল ফাইলের লাইন a থেকে শুরু হয়ে b লাইন বিস্তৃত; নতুন ফাইলের লাইন c থেকে শুরু হয়ে d লাইন বিস্তৃত। স্পেস দিয়ে প্রিফিক্স করা লাইনগুলো অপরিবর্তিত প্রসঙ্গ লাইন (প্রতি পাশে ডিফল্টভাবে তিনটি — হাঙ্কটি ফাইলে সঠিকভাবে খুঁজে পেতে যথেষ্ট)। - দিয়ে প্রিফিক্স করা লাইন বাদ পড়েছে; + দিয়ে প্রিফিক্স করা লাইন যোগ হয়েছে।

এই ফরম্যাট সার্বজনীন কারণ এটি মানুষের পড়ার উপযোগী এবং মেশিনের প্রয়োগযোগ্য দুটোই। patch কমান্ড একটি ইউনিফাইড ডিফ পড়ে এবং মূল ফাইলে প্রয়োগ করে নতুন সংস্করণ তৈরি করে — এটি সঠিক অবস্থান খুঁজে পেতে প্রসঙ্গ লাইনগুলো ব্যবহার করে, এমনকি চারপাশের লাইন নম্বর বদলে গেলেও। -p ফ্ল্যাগ নিয়ন্ত্রণ করে হেডারের ফাইল পাথ থেকে কতগুলো লিডিং ডিরেক্টরি কম্পোনেন্ট বাদ দেওয়া হবে (যেমন, patch -p1 Git-এর যোগ করা a/ প্রিফিক্স বাদ দেয়)। যখন আপনি এই টুলে Download .diff-এ ক্লিক করেন, আপনি ঠিক এই ফরম্যাটে একটি বৈধ ইউনিফাইড-ডিফ প্যাচ পান, যা patch দিয়ে প্রয়োগ করার, একটি পুল রিকোয়েস্টে রিভিউ করার, বা পরিবর্তনের রেকর্ড হিসেবে সংরক্ষণ করার জন্য প্রস্তুত।

হাঙ্ক হেডার বোঝা বড় ডিফ পড়ার জন্যও কাজে লাগে। প্রতিটি লাইন স্ক্রল করার বদলে, @@ সংখ্যাগুলো দেখে সরাসরি বদলে যাওয়া অংশে যান, এবং প্রসঙ্গ লাইনগুলোকে ল্যান্ডমার্ক হিসেবে ব্যবহার করুন। GitHub-এর পুল রিকোয়েস্ট ভিউয়ারের মতো কোড-রিভিউ টুল এই হেডারগুলো পার্স করে সঠিক লাইনে ইনলাইন মন্তব্য দেখায়, যে কারণে এই টুল থেকে ডাউনলোড করা একটি .diff ফাইল সরাসরি একটি GitHub রিভিউতে পেস্ট করা যায় বা একটি মেইলিং লিস্টে প্যাচ ইমেইল হিসেবে পাঠানো যায়।

শব্দ-স্তর ও অক্ষর-স্তর ডিফ: ডিফের ভেতরের ডিফ

স্ট্যান্ডার্ড লাইন-ভিত্তিক ডিফিং প্রতিটি লাইনকে একক একক হিসেবে গণ্য করে: একটি মাত্র শব্দ বদলালেও পুরো লাইনটি বাদ ও পুনরায় যোগ হওয়া হিসেবে চিহ্নিত হয়। কোড রিভিউয়ের জন্য এটি ঠিক আছে, যেখানে আপনি সম্পূর্ণ বদলে যাওয়া স্টেটমেন্ট দেখতে চান, কিন্তু এটি গদ্যের ছোট সম্পাদনাগুলো আড়াল করে দেয়। Word diff (Git-এ git diff --word-diff হিসেবে প্রকাশিত) প্রতিটি বদলে যাওয়া লাইনের ভেতর একটি দ্বিতীয় LCS পাস প্রয়োগ করে, স্পেস দিয়ে আলাদা করা টোকেনগুলোকে তুলনার একক হিসেবে ধরে। ফলাফল হলো, "the quick brown fox" থেকে "the slow brown fox"-এ বদলালে শুধু "quick" বনাম "slow" হাইলাইট হয়, পুরো বাক্যটি নয়। এই টুলে এটিই ডিফল্ট Word গ্র্যানুলারিটি, এবং গদ্য সম্পাদনা, রিলিজ নোট বা ডকুমেন্টেশন রিভিউয়ের জন্য সবচেয়ে কার্যকর সেটিং।

অক্ষর-স্তরের ডিফ আরও এক ধাপ এগিয়ে, প্রতিটি একক অক্ষরকে তুলনার একক হিসেবে ধরে। এটি সবচেয়ে বেশি কাজে লাগে এমন একক-লাইন তুলনায় যেখানে কন্টেন্ট ঘন এবং অবস্থানভিত্তিক — একটি বদলে যাওয়া URL, একটি CSV ফিল্ড ভ্যালু, একটি তারিখ স্ট্রিং, একটি ডাটাবেস কানেকশন স্ট্রিং, বা একটি হেক্সাডেসিমাল হ্যাশ। অক্ষর স্তরে, 2024-06-19 থেকে 2024-06-20-তে বদলালে ঠিক সেই একটি সংখ্যা চিহ্নিত হয় যা বদলেছে, পুরো স্ট্রিং নয়। সূক্ষ্মতর গ্র্যানুলারিটির খরচ হলো ভিজ্যুয়াল শব্দগোলযোগ: অক্ষর স্তরে একাধিক ছোট সম্পাদনাসহ একটি বাক্য পড়া কঠিন হয়ে যেতে পারে কারণ হাইলাইটিং খণ্ডিত হয়ে যায়। সঠিক স্তরটি কন্টেন্টের ওপর নির্ভর করে — কোড রিভিউর জন্য লাইন ডিফ, গদ্যের জন্য শব্দ ডিফ, ডেটা যাচাইয়ের জন্য অক্ষর ডিফ — যে কারণে এই টুল তিনটিই টগল হিসেবে দেয়।

বিভিন্ন স্তরের মধ্যে এই পারস্পরিক ক্রিয়া এটাও ব্যাখ্যা করে যে কেন semantic diff টুল একটি ক্রমবর্ধমান ক্ষেত্র। সোর্স কোডের জন্য, word diff-ও বিভ্রান্তিকর হতে পারে কারণ প্রোগ্রামিং ভাষার এমন স্ট্রাকচার আছে যা হোয়াইটস্পেস ধরে না — একটি বদলে যাওয়া ভ্যারিয়েবলের নাম ফাইলজুড়ে অনেক ছোট শব্দ-পরিবর্তন হিসেবে দেখা যায়, একটি ধারণাগত পরিবর্তন হিসেবে নয়। GumTree-এর মতো টুল কাঁচা টেক্সটের বদলে অ্যাবস্ট্র্যাক্ট সিনট্যাক্স ট্রি (AST)-এর ওপর কাজ করে, পরিবর্তনগুলোকে প্রোগ্রামের যে উপাদানের সাথে সম্পর্কিত সেই অনুসারে গ্রুপ করে। AST-সচেতন ডিফিং বিশেষভাবে শক্তিশালী স্বয়ংক্রিয় রিফ্যাক্টরিং অডিটের জন্য, যেখানে আপনি নিশ্চিত করতে চান একটি রিনেম ঠিক সঠিক আইডেন্টিফায়ারগুলোই ছুঁয়েছে, আর কিছু নয়।

কোডের বাইরেও ডিফ: আইনি রেডলাইন, কনফিগ ড্রিফট এবং ডেটা যাচাই

ডিফ টুল সোর্স কোডের জন্য উদ্ভাবিত হলেও অন্তর্নিহিত অ্যালগরিদম ডোমেইন-নির্বিশেষ — লাইনে লাইনে প্রতিনিধিত্বযোগ্য যেকোনো ডকুমেন্ট নিখুঁত পরিবর্তন ট্র্যাকিং থেকে উপকৃত হয়। আইনি চুক্তি রেডলাইনিং সবচেয়ে উচ্চ-ঝুঁকির প্রয়োগগুলোর একটি: আইনজীবীরা একটি চুক্তির দুটি আলোচিত খসড়া তুলনা করার সময় ঠিক জানতে চান কোন ধারা যোগ, বাদ বা পুনর্লিখিত হয়েছে, এবং শব্দ হাইলাইট সহ একটি লাইন-স্তরের ডিফ ম্যানুয়ালি উভয় সংস্করণ পড়ার চেয়ে দ্রুত ও নির্ভরযোগ্যভাবে সেই নির্ভুলতা দেয়। অনেক ফার্ম এর জন্য Word-এর Track Changes ব্যবহার করে, তবে ভিন্ন ওয়ার্ড-প্রসেসর ফরম্যাটে বিনিময় করা ডকুমেন্টে একটি প্লেইন-টেক্সট ডিফ চেকার অনেক বেশি বিশ্বস্ত, যেখানে অদৃশ্য ফরম্যাটিং পরিবর্তন পার্থক্যকে আড়াল করতে বা তৈরি করতে পারে।

কনফিগারেশন ম্যানেজমেন্ট এবং ইনফ্রাস্ট্রাকচার-অ্যাজ-কোড ওয়ার্কফ্লো ডিফিংয়ের ওপর ব্যাপকভাবে নির্ভরশীল। একটি Ansible প্লেবুক, Terraform প্ল্যান বা Kubernetes ম্যানিফেস্ট প্রয়োগ করার আগে, দলগুলো প্রস্তাবিত ফাইলটি বর্তমান ডিপ্লয় করা সংস্করণের সাথে ডিফ করে ঠিক কী বদলাবে তা অডিট করে — একটি অনুপস্থিত ইনডেন্টেশন লেভেল, একটি বদলে যাওয়া পোর্ট, বা একটি যোগ হওয়া এনভায়রনমেন্ট ভেরিয়েবল, সবকিছুরই প্রোডাকশনে প্রভাব থাকতে পারে। একটি Terraform স্টেট ফাইলের before.json এবং after.json স্ন্যাপশট ডিফ করা একটি সাধারণ প্যাটার্ন যাচাই করার জন্য যে একটি ডিপ্লয়মেন্ট ঠিক ততটুকুই করেছে যতটা উদ্দেশ্য ছিল। একইভাবে, দুটি CSV বা JSON ডেটা এক্সপোর্ট তুলনা করা — যেমন, একটি পণ্য ক্যাটালগ বা ডাটাবেস টেবিলের দুটি স্ন্যাপশট — দেখায় কোন সারিগুলো যোগ, বাদ বা পরিবর্তিত হয়েছে, যা একটি স্প্রেডশিটে ক্লান্তিকর ও ভুলের ঝুঁকিপূর্ণ, কিন্তু একটি ডিফ টুলে তাৎক্ষণিক।

ওয়েব পেজ মনিটরিং এবং প্রতিযোগিতামূলক গোয়েন্দাগিরি আরেকটি ব্যবহারিক প্রয়োগ: নিয়মিতভাবে একজন প্রতিযোগীর প্রাইসিং পেজ, একটি সরকারি নিয়ন্ত্রক বিজ্ঞপ্তি বা একটি আইনি পরিষেবার শর্তাবলী নিয়ে আসা এবং পরপর নেওয়া ফেচগুলো ডিফ করা প্রকাশ করে দেয় কখন দাম বদলেছে, কখন নতুন ধারা যোগ হয়েছে, বা কখন কোনো পণ্য চুপিসারে বন্ধ হয়ে গেছে। একাডেমিক ও বাণিজ্যিক প্লেজিয়ারিজম শনাক্তকরণ সিস্টেম একই ধারণার একটি ভিন্নরূপ ব্যবহার করে — জমা দেওয়া একটি ডকুমেন্ট ও পরিচিত টেক্সটের একটি কর্পাসের মধ্যে সাদৃশ্য স্কোর গণনা করে — যদিও সেই স্কেলে তুলনাটি নিখুঁতের বদলে সম্ভাব্যতাভিত্তিক। এই সব ক্ষেত্রেই অন্তর্নিহিত অন্তর্দৃষ্টিটি একই যা ১৯৭৫ সালে Unix diff প্রদর্শন করেছিল: পরিবর্তনকে একটি বেসলাইনের সংযোজন ও বিয়োজনের একটি ন্যূনতম সেট হিসেবে উপস্থাপন করা দুটি সম্পূর্ণ কপি পাশাপাশি সংরক্ষণ বা উপস্থাপন করার চেয়ে অনেক বেশি তথ্যবহুল, অডিটযোগ্য এবং কার্যকর।

Frequently asked questions

ডিফ চেকার কী এবং এটি কীভাবে কাজ করে?

একটি ডিফ চেকার (বা টেক্সট তুলনা টুল) টেক্সটের দুটি সংস্করণ নিয়ে ঠিক কী বদলেছে তা দেখায়। বাম দিকে আপনার মূল সংস্করণ এবং ডান দিকে পরিবর্তিত সংস্করণ পেস্ট করুন, আর এটি সেগুলোকে সাজিয়ে প্রতিটি পার্থক্য হাইলাইট করে: মূল থেকে বাদ পড়া লাইন লাল রঙে দেখায়, নতুন সংস্করণে যোগ হওয়া লাইন সবুজ রঙে দেখায়, এবং সম্পাদিত লাইনগুলো শব্দে শব্দে চিহ্নিত হয়। এর পেছনে একটি longest-common-subsequence (LCS) অ্যালগরিদম চলে, যা সংযোজন ও বিয়োজনের সবচেয়ে ছোট সেট খুঁজে বের করে — ঠিক git diff-এর পেছনের কৌশলটির মতো। উদাহরণস্বরূপ, 'color: red'-কে 'color: blue'-এর সাথে তুলনা করলে শুধু 'red' বদলে 'blue' হওয়াটা হাইলাইট হয়, পুরো লাইন নয়।

দুটি টেক্সটের পার্থক্য কীভাবে তুলনা করব?

প্রথম সংস্করণটি Original বাক্সে এবং দ্বিতীয়টি Changed বাক্সে পেস্ট করুন। আপনি টাইপ বা পেস্ট করার মুহূর্তেই তুলনা চলতে শুরু করে — কোনো Compare বাটন চাপার দরকার নেই। মিলে যাওয়া লাইনগুলো সাধারণ থাকে, আর পার্থক্যগুলো রঙ-কোডেড হয়, তাই আপনি সঙ্গে সঙ্গে সেগুলো স্ক্যান করতে পারেন। কোন পাশ 'আগে' তা উল্টাতে Swap ব্যবহার করুন, এবং কতটা সূক্ষ্মভাবে হাইলাইট করতে চান তা অনুযায়ী Character, Word এবং Line-এর মধ্যে গ্র্যানুলারিটি বদলান। উদাহরণস্বরূপ, একটি ইমেইলের দুটি খসড়া পেস্ট করুন, আর আপনি দেখতে পাবেন ঠিক কোন বাক্যগুলো নতুন করে লেখা হয়েছে। টুলটি যেকোনো দৈর্ঘ্যের টেক্সটে কাজ করে, কোনো ক্যারেক্টার সীমা ছাড়াই।

দুটি টেক্সট ফাইল অনলাইনে কীভাবে তুলনা করব?

পেস্ট করার বদলে প্রতিটি পাশে একটি ফাইল ড্রপ বা আপলোড করুন। Upload-এ ক্লিক করুন, অথবা একটি .txt, .md, .csv, .json বা .js ফাইল সরাসরি একটি বাক্সে ড্র্যাগ করুন, আর এর কন্টেন্ট তাৎক্ষণিক লোড হয় — তারপর ডিফ স্বয়ংক্রিয়ভাবে দেখা যায়। যেহেতু সবকিছু আপনার ব্রাউজারে স্থানীয়ভাবে চলে, ফাইলগুলো কখনো কোথাও পাঠানো হয় না, যা দুটি কনফিগারেশন ফাইল, দুটি এক্সপোর্ট, বা কোনো ডকুমেন্টের দুটি সংশোধন কোনো তৃতীয়-পক্ষ সার্ভারে আপলোড না করেই তুলনা করার জন্য আদর্শ করে তোলে। এটি Diffchecker.com-এর চেয়ে নিরাপদ, যা ঐচ্ছিকভাবে তাদের সার্ভারে ডিফ সংরক্ষণ করে।

সাইড-বাই-সাইড এবং ইনলাইন (ইউনিফাইড) ডিফ ভিউয়ের মধ্যে পার্থক্য কী?

সাইড-বাই-সাইড (স্প্লিট) ভিউ মূল ও পরিবর্তিত টেক্সট দুটি সাজানো কলামে দেখায়, তাই আপনি পাশাপাশি পড়ে প্রতিটি লাইনের আগে-পরে দেখতে পারেন — বড় স্ক্রিনে এটিই সেরা। ইনলাইন (ইউনিফাইড) ভিউ সবকিছু এক কলামে স্তূপ করে, বাদ পড়া লাইন − দিয়ে এবং যোগ হওয়া লাইন + দিয়ে চিহ্নিত করে, ঠিক একটি git diff বা কোড-রিভিউ প্যাচের মতো। ইউনিফাইড ভিউ আরও কম্প্যাক্ট এবং ছোট ফোন স্ক্রিনে ডিফল্ট; সাইড-বাই-সাইড গদ্যের জন্য সহজ। যেকোনো সময় View বাটন দিয়ে এদের মধ্যে সুইচ করুন। Beyond Compare এবং WinMerge-এর মতো বেশিরভাগ ডেস্কটপ ডিফ টুলও দুটি ভিউই দেয়, তবে ইনস্টলেশন লাগে।

সবুজ এবং লাল হাইলাইটের মানে কী?

সবুজ মানে যোগ হয়েছে — এমন টেক্সট যা Changed সংস্করণে আছে কিন্তু Original-এ নেই। লাল মানে বাদ পড়েছে — এমন টেক্সট যা Original-এ ছিল কিন্তু Changed সংস্করণ থেকে চলে গেছে। একটি সম্পাদিত লাইনে উভয়ই দেখায়: পুরনো শব্দচয়ন বাম দিকে লাল রঙে এবং নতুন শব্দচয়ন ডান দিকে সবুজ রঙে, ঠিক বদলে যাওয়া শব্দ বা অক্ষরগুলো আরও গাঢ়ভাবে হাইলাইট করা। স্ট্যাটস লাইন মোট সংখ্যা সংক্ষেপে দেখায়, যেমন '+৪ যোগ · −২ বাদ · ~৩ পরিবর্তিত'। রঙের এই কনভেনশন git, GitHub এবং GitLab কোড রিভিউয়ে ব্যবহৃত কনভেনশনের সাথে মিলে যায়।

তুলনা করার সময় কি হোয়াইটস্পেস বা অক্ষরের কেস উপেক্ষা করতে পারি?

হ্যাঁ। 'Ignore whitespace' চালু করুন, তাহলে শুধু স্পেসিং, ট্যাব বা ইনডেন্টেশনে ভিন্ন লাইনগুলোকে একই ধরা হবে — একটি ফাইলে ট্যাব এবং অন্যটিতে স্পেস ব্যবহার হলে এটি কাজে লাগে। 'Ignore case' বড় ও ছোট হাতের অক্ষরকে একই ধরে, তাই 'Error' এবং 'error' চিহ্নিত হয় না। 'Trim trailing spaces' লাইনের শেষে অদৃশ্য স্পেস সরিয়ে দেয়, যা ভুতুড়ে পার্থক্যের একটি সাধারণ উৎস। প্রকৃতপক্ষে গুরুত্বপূর্ণ পরিবর্তনগুলোতে মনোযোগ দিতে এগুলো একসাথে ব্যবহার করুন। এই অপশনগুলো স্বয়ংক্রিয়ভাবে ফরম্যাট করা বা ভিন্নভাবে ইনডেন্ট করা ফাইল মিথ্যা পজিটিভ ছাড়াই তুলনা করা সহজ করে।

দুটি JSON ফাইল কীভাবে তুলনা করব?

প্রতিটি JSON ডকুমেন্ট একটি পাশে পেস্ট করুন এবং 'Treat as JSON' চালু করুন। টুলটি দুটোই সামঞ্জস্যপূর্ণ ২-স্পেস ইনডেন্টেশন দিয়ে প্রিটি-প্রিন্ট করে এবং অবজেক্ট কি সাজিয়ে দেয়, তাই কি-ক্রম বা ফরম্যাটিংয়ের পার্থক্য পরিবর্তন হিসেবে দেখায় না — শুধু আসল ভ্যালু-পরিবর্তনই দেখা যায়। উদাহরণস্বরূপ, {"b":2,"a":1} এবং {"a":1,"b":2} অভিন্ন হিসেবে রিপোর্ট হয়, যখন "a":1 কে "a":5-এ বদলালে সেই লাইনে হাইলাইট দেখায়। এটি একে একটি প্রকৃত JSON ডিফ চেকার করে তোলে, কাঁচা টেক্সট তুলনার বদলে, Diffchecker.com-এর বিপরীতে, যা JSON-কে প্লেইন টেক্সট হিসেবে ধরে।

কোড তুলনা বা git-স্টাইল ডিফ কীভাবে পাব?

এটি যেকোনো সোর্স কোডে কাজ করে — একটি ফাংশনের দুটি সংস্করণ, একটি কনফিগ ফাইল, বা পুরো একটি ফাইল পেস্ট করুন। একটি লাইনের ভেতর ঠিক কোন টোকেন বদলেছে তা দেখতে গ্র্যানুলারিটি Word বা Character-এ সেট করুন, এবং পরিচিত +/− গিট-স্টাইল লেআউটের জন্য Inline ভিউ ব্যবহার করুন। ফলাফলটি সংরক্ষণ বা শেয়ার করতে, একটি স্ট্যান্ডার্ড ইউনিফাইড-ডিফ প্যাচ (@@ হাঙ্ক হেডারসহ) পেতে Download .diff-এ ক্লিক করুন, যা আপনি <code>patch</code> দিয়ে প্রয়োগ করতে বা রিভিউয়ে যুক্ত করতে পারেন, অথবা একই প্যাচ ক্লিপবোর্ডে রাখতে Copy diff। এটি GitHub পুল রিকোয়েস্ট এবং GitLab মার্জ রিকোয়েস্টে ব্যবহৃত একই ফরম্যাট।

গোপনীয় বা প্রাইভেট টেক্সট অনলাইনে তুলনা করা কি নিরাপদ?

হ্যাঁ — এবং এটি বেশিরভাগ অনলাইন ডিফ টুলের চেয়ে নিরাপদ। উদাহরণস্বরূপ Diffchecker.com ঐচ্ছিকভাবে আপনার ডিফ তাদের সার্ভারে সংরক্ষণ করে এবং সেগুলো প্রাইভেট রাখতে একটি পেইড প্ল্যান দেয়। আমাদের টুল আপনার টেক্সট কখনোই আপলোড করে না। পুরো ডিফটি JavaScript দিয়ে আপনার ব্রাউজারে গণনা হয়, তাই গোপনীয় কোড, চুক্তি, API কি বা ব্যক্তিগত ডেটা কখনো আপনার ডিভাইস ছাড়ে না এবং কখনো লগ হয় না। পেজ লোড হয়ে গেলে আপনি অফলাইনেও এটি ব্যবহার চালিয়ে যেতে পারেন। কোনো অ্যাকাউন্ট দরকার নেই, এবং কোনো ব্যবহারের সীমাও নেই।

দুটি ফাইল আপলোড করে তুলনা করা যায় কি?

হ্যাঁ। প্রতিটি পাশ একটি ফাইল গ্রহণ করে: Upload-এ ক্লিক করে একটি বেছে নিন, অথবা একটি টেক্সট ফাইল সরাসরি বাক্সে ড্র্যাগ-অ্যান্ড-ড্রপ করুন। দুটি ফাইল তাৎক্ষণিক তুলনা হয়, লাইনে লাইনে। যেকোনো টেক্সট-ভিত্তিক কন্টেন্ট সমর্থিত — .txt, .csv, .json, .xml, .html, .css, .js, .py, .md, লগ ইত্যাদি। কোনো সার্ভারে কিছু আপলোড হয় না; ফাইলগুলো স্থানীয়ভাবে পড়া হয় এবং আপনার ডিভাইসেই থাকে। এটি WinMerge, Beyond Compare বা KDiff3-এর মতো ডেস্কটপ টুলের জন্য দ্রুত এক-বারের তুলনার একটি ব্যবহারিক ফ্রি বিকল্প করে তোলে।

ইউনিফাইড ডিফ কী?

একটি ইউনিফাইড ডিফ হলো git এবং Unix diff/patch টুল ব্যবহৃত পরিবর্তন দেখানোর স্ট্যান্ডার্ড কমপ্যাক্ট ফরম্যাট। এটি একটি একক স্ট্রিমে পরিবর্তনগুলো তালিকাভুক্ত করে: − দিয়ে শুরু হওয়া লাইনগুলো বাদ পড়েছে, + দিয়ে শুরু হওয়া লাইনগুলো যোগ হয়েছে, এবং চারপাশের অপরিবর্তিত 'প্রসঙ্গ' লাইনে একটি লিডিং স্পেস থাকে। প্রতিটি সেকশন একটি @@ হেডার দিয়ে শুরু হয় যা লাইন নম্বর দেখায়, যেমন '@@ -3,4 +3,5 @@'। এভাবে পরিবর্তন পড়তে Inline ভিউ বেছে নিন, বা একটি বাস্তব ইউনিফাইড-ডিফ প্যাচ ফাইল এক্সপোর্ট করতে Download .diff, যা আপনি <code>patch</code> কমান্ড দিয়ে প্রয়োগ করতে বা একটি কোড রিভিউতে শেয়ার করতে পারেন।

দুটি CSV বা স্প্রেডশিট কলাম কীভাবে তুলনা করব?

প্রতিটি পাশে একটি করে ভ্যালু কলাম পেস্ট করুন — আপনার স্প্রেডশিট থেকে কলাম A কপি করে Original-এ এবং কলাম B Changed-এ — তারপর সারিগুলো নিচে পড়ুন। প্রতিটি সেল নিজের লাইনে বসে, তাই যোগ, বাদ বা পরিবর্তিত এন্ট্রিগুলো আলাদাভাবে হাইলাইট হয়। বিচ্ছিন্ন স্পেস বা ক্যাপিটালাইজেশন থেকে মিথ্যা অমিল এড়াতে 'Trim trailing spaces' এবং 'Ignore case' চালু করুন। .csv হিসেবে এক্সপোর্ট করা ডেটার জন্য, আপনি পুরো ফাইলটিও ফেলে দিয়ে কাঁচা সারিগুলো সরাসরি তুলনা করতে পারেন। এটি Excel-এর কন্ডিশনাল ফরম্যাটিং বা একটি VLOOKUP দিয়ে পার্থক্য খোঁজার চেয়ে অনেক দ্রুত।

ডিফ চেকার কি মোবাইলে কাজ করে — আইফোন এবং অ্যান্ড্রয়েড?

হ্যাঁ। ডিফ চেকার সম্পূর্ণ রেসপন্সিভ এবং iPhone (Safari বা Chrome), Android (Chrome বা Firefox) এবং ট্যাবলেটে যেকোনো আধুনিক ব্রাউজারে কাজ করে। দুই-কলামের সাইড-বাই-সাইড ভিউ ছোট স্ক্রিনে স্বয়ংক্রিয়ভাবে একক-কলামের ইনলাইন ভিউতে পরিণত হয়, তাই অনুভূমিক স্ক্রলিং ছাড়াই ডিফ পড়া যায়। কোনো অ্যাপ ডাউনলোডের দরকার নেই। Beyond Compare, WinMerge এবং KDiff3-এর মতো ডেস্কটপ টুলের জন্য Windows বা Mac দরকার এবং সেগুলো ফোনে একেবারেই ব্যবহার করা যায় না — এই টুল একটি ফ্রি, ইনস্টলেশন-বিহীন বিকল্প দিয়ে সেই ফাঁকটি পূরণ করে।