Rossari

Our Products
Advanced Sweeping & Industrial Cleaning Equipment
About Us
Specialty Chemistry Innovation, Built for India's Industrial Needs

Rossari Biotech Limited is one of India's largest specialty chemical manufacturers, headquartered in Mumbai. Rossari is known for high-performance, chemistry-led solutions engineered for industrial, textile and consumer-facing applications. Our portfolio covers surfactants, polymers, silicones and enzymes, spanning Home & Personal Care, Textile Specialty Chemicals, Performance Additives, and Cleaning, Hygiene & Disinfection segments.

With over four decades of experience, Rossari Biotech offers 4,300+ products to 3,000+ customers across 65+ countries, operating seven manufacturing facilities with 332,000+ MTPA capacity. The brand supports customer segments across textiles, home and personal care, animal health and nutrition, and diverse industrial applications nationwide.


WHY Rossari Biotech
Capabilities & Strengths That Set Us Apart

Complete Chemistry Portfolio

A wide range of solutions across surfactants, polymers, silicones, enzymes and specialty chemicals tailored to diverse industrial needs.

Global Chemistry Heritage

Backed by over four decades of product innovation and the technical prowess of experienced promoters and senior management.

Built for Indian Conditions

Solutions engineered through in-house R&D to meet demanding application needs across India's complex industrial landscape.

Industrial-Grade Performance

Application-support-driven formulations built for consistency, reliability and measurable performance across large-scale operations.

Sustainable Chemistry Focus

Green and sustainable products developed through zero-liquid-discharge facilities, reducing environmental impact without compromising results.

Strong Global Network

Trusted across 65+ countries, with a flexible manufacturing setup serving textiles, home care, animal nutrition and industrial sectors.

Enquire Now

Our Perspectives
Latest Insights

Ready to Elevate Your Facility's Chemistry Needs?

Partner with Rossari Biotech for high-performance, sustainable specialty chemical solutions — trusted by 3,000+ customers across 65+ countries.

Book a Demo
The iframe is created on first hover and destroyed on leave, so the page never pays the YouTube embed cost unless someone engages. ============================================================ */ (function () { const box = document.getElementById('featureVideoBox'); if (!box) return; const videoId = box.getAttribute('data-video-id'); const frameWrap = box.querySelector('.rb-feature-video-frame'); if (!videoId || !frameWrap) return; let iframeEl = null; let leaveTimer = null; function play() { clearTimeout(leaveTimer); if (!iframeEl) { iframeEl = document.createElement('iframe'); iframeEl.src = `https://www.youtube.com/embed/${videoId}?autoplay=1&mute=1&loop=1&playlist=${videoId}&controls=0&modestbranding=1&rel=0`; iframeEl.allow = 'autoplay; encrypted-media'; iframeEl.title = 'Featured video preview'; frameWrap.appendChild(iframeEl); } box.classList.add('is-playing'); } function stop() { box.classList.remove('is-playing'); // Small delay so a quick mouse-out/in doesn't rebuild the iframe. leaveTimer = setTimeout(() => { if (iframeEl) { iframeEl.remove(); iframeEl = null; } }, 200); } box.addEventListener('mouseenter', play); box.addEventListener('mouseleave', stop); // Touch devices have no hover — first tap previews, the link works after. box.addEventListener('touchstart', function (e) { if (!iframeEl) { e.preventDefault(); play(); } }, { passive: false }); })(); /* ============================================================ REELS / SHORTS CAROUSEL ------------------------------------------------------------ Expects markup:
...
Card widths come from CSS (4 / 3 / 1 per breakpoint); this only measures and translates. Steps are one card at a time. ============================================================ */ (function () { const section = document.querySelector('.rb-reels'); if (!section) return; const outer = section.querySelector('.rb-carousel-outer'); const track = document.getElementById('reelsTrack'); const dotWrap = document.getElementById('reelsDotContainer'); const prevBtn = document.getElementById('reelsPrevBtn'); const nextBtn = document.getElementById('reelsNextBtn'); if (!outer || !track || !dotWrap || !prevBtn || !nextBtn) return; const cards = Array.from(track.querySelectorAll('.rb-reel-card')); const TOTAL = cards.length; if (!TOTAL) return; let currentIndex = 0; function outerWidth() { // Fractional width — offsetWidth rounds, and the lost sub-pixels // are what clip the last card. return outer.getBoundingClientRect().width; } function getVisible() { const w = outerWidth(); if (w <= 560) return 1; if (w <= 1024) return 3; return 4; } function getGap() { // Read the real gap from CSS so the JS can't drift out of sync // with the media queries. return parseFloat(getComputedStyle(track).gap) || 22; } function cardWidth() { return cards[0] ? cards[0].getBoundingClientRect().width : 0; } function totalSteps() { return Math.max(0, TOTAL - getVisible()); } function buildDots() { dotWrap.innerHTML = ''; // Nothing to page through — hide the controls entirely rather than // showing one dead dot and two greyed arrows. if (totalSteps() === 0) { dotWrap.style.display = 'none'; prevBtn.parentElement.style.visibility = 'hidden'; return; } dotWrap.style.display = ''; prevBtn.parentElement.style.visibility = ''; for (let i = 0; i <= totalSteps(); i++) { const d = document.createElement('div'); d.className = 'rb-dot' + (i === currentIndex ? ' active' : ''); d.addEventListener('click', () => goTo(i)); dotWrap.appendChild(d); } } function updateDots() { dotWrap.querySelectorAll('.rb-dot').forEach((d, i) => { d.classList.toggle('active', i === currentIndex); }); } function applyTransform() { const offset = currentIndex * (cardWidth() + getGap()); track.style.transform = `translate3d(-${offset}px, 0, 0)`; } function goTo(idx) { currentIndex = Math.max(0, Math.min(idx, totalSteps())); applyTransform(); updateDots(); prevBtn.classList.toggle('disabled', currentIndex === 0); nextBtn.classList.toggle('disabled', currentIndex >= totalSteps()); } function init() { currentIndex = Math.min(currentIndex, totalSteps()); buildDots(); applyTransform(); prevBtn.classList.toggle('disabled', currentIndex === 0); nextBtn.classList.toggle('disabled', currentIndex >= totalSteps()); } prevBtn.addEventListener('click', () => goTo(currentIndex - 1)); nextBtn.addEventListener('click', () => goTo(currentIndex + 1)); // Touch / swipe support let touchStartX = 0; outer.addEventListener('touchstart', e => { touchStartX = e.touches[0].clientX; }, { passive: true }); outer.addEventListener('touchend', e => { const dx = touchStartX - e.changedTouches[0].clientX; if (Math.abs(dx) > 40) dx > 0 ? goTo(currentIndex + 1) : goTo(currentIndex - 1); }, { passive: true }); // Debounced resize let resizeTimer; const reflow = () => { clearTimeout(resizeTimer); resizeTimer = setTimeout(init, 80); }; window.addEventListener('resize', reflow); // The container can change width without the window doing so // (scrollbar appearing, embedded in a themed page). Track it directly. if (window.ResizeObserver) new ResizeObserver(reflow).observe(outer); init(); // Re-measure once images/fonts have settled so widths are correct. window.addEventListener('load', init); })();