= icon('iso') ?>ISO 9001:2015 certified manufacturer · Ambala, India
Laboratory glassware, plasticware & labware, direct from the factory
Borosilicate 3.3 glassware, plastic labware, rubber tubing, metalware and instruments. 6,500+ products made in our own facility and supplied to laboratories, institutions and importers in 20+ countries.
= icon('check') ?>Factory-direct prices
= icon('check') ?>GST invoice in India
= icon('check') ?>FOB / CIF export
= icon('check') ?>Custom & OEM glassware
= icon('beaker') ?>Borosilicate 3.3 Low expansion · high chemical resistance
= icon('globe') ?>20+ countries Gulf · Africa · SE Asia · Europe
= icon('clock') ?>24-hour quotes FOB / CIF / GST
Since = e(SITE_FOUNDED) ?> Making lab glassware
6,500+ Products in catalogue
20+ Countries supplied
ISO 9001 Certified quality system
2–5 days Dispatch for stock items
= e($p['badge']) ?>
= icon('heart') ?>
SKU = e($p['sku']) ?>
= e($p['spec']) ?>
= stars_html((float) $p['rating']) ?>= e(number_format((float) $p['rating'], 1)) ?> (= e((string) $p['reviews']) ?>)
= price_html($p['price']) ?>
= price_html($p['old'], true) ?>Save = round((1 - $p['price'] / $p['old']) * 100) ?>%
Request price
= icon('plus') ?>Add to quote
View
Why buyers order straight from the factory
One company responsible for price, quality and delivery
No trader in between means a better price, a faster answer and a single point of accountability from furnace to your bench.
$u): ?>
= icon($u['icon']) ?>
= e($u['title']) ?>
= e($u['text']) ?>
Industries we supply
Trusted by labs across sectors
Exporting to 20+ countries
Export-grade packing, FOB or CIF pricing, documents ready before the vessel date
We ship mixed-item orders to importers, distributors and laboratories. Tell us your port and we quote freight included.
= icon('send') ?>Request export quote
How an export order works
$s): ?>
= $n + 1 ?>
= e($s['title']) ?> = e($s['text']) ?>
Custom & OEM glassware
Not in the catalogue? We make it.
= icon('check') ?>Built from your drawing, sample or specification
= icon('check') ?>Your brand, marking and packing for resellers
= icon('check') ?>Scientific glassblowing for special apparatus and reaction vessels
= icon('check') ?>Prototype in 7 to 10 days, production in 15 to 30 days
= icon('custom') ?>Send your drawing
Quality you can verify
Borosilicate 3.3, inspected at every stage
Glass type Borosilicate 3.3 (ISO 3585 / ASTM E438 Type I Class A)
Thermal expansion 3.3 × 10⁻⁶ K⁻¹ (20–300 °C)
Max working temp 500 °C (short term)
Volumetric accuracy Class A and Class B, certificates on request
Quality system ISO 9001:2015 certified
Ask for certificates = icon('arrow') ?>
What buyers say
Repeat orders from labs and importers
$t): ?>
= stars_html((float) $t['rating']) ?>
“= e($t['quote']) ?>”
= e($t['who']) ?> = e($t['where']) ?>
$f): ?>
>
= e($f['q']) ?>= icon('chevron') ?>
= e($f['a']) ?>
Get your quote
Tell us what you need. We reply within 24 hours.
Item names, sizes and quantities are enough. For export we quote FOB or CIF to your port; for India we invoice with GST and dispatch stock items in 2 to 5 days.
= icon('check') ?>No minimum order for stock items in India
= icon('check') ?>Samples adjusted against your bulk order
= icon('check') ?>Class A certificates on request
/* SGC LABS® homepage behaviour — vanilla JS, no dependencies */
(function () {
'use strict';
const $ = (s, c = document) => c.querySelector(s);
const $$ = (s, c = document) => Array.from(c.querySelectorAll(s));
const cfg = window.SGC || {};
const store = {
get(k, d) { try { return JSON.parse(localStorage.getItem(k)) ?? d; } catch { return d; } },
set(k, v) { try { localStorage.setItem(k, JSON.stringify(v)); } catch { /* private mode */ } },
};
/* ---------- Sticky header shadow ---------- */
const header = $('#header');
const onScroll = () => {
header.classList.toggle('is-stuck', window.scrollY > 8);
const top = $('#to-top');
if (top) top.hidden = window.scrollY < 600;
};
window.addEventListener('scroll', onScroll, { passive: true });
onScroll();
$('#to-top')?.addEventListener('click', () => window.scrollTo({ top: 0, behavior: 'smooth' }));
/* ---------- Mobile drawer ---------- */
const drawer = $('#drawer');
const burger = $('.burger');
const openDrawer = (open) => {
drawer.setAttribute('aria-hidden', open ? 'false' : 'true');
burger.setAttribute('aria-expanded', String(open));
document.body.style.overflow = open ? 'hidden' : '';
if (open) $('.drawer__close', drawer)?.focus();
};
burger?.addEventListener('click', () => openDrawer(true));
$$('[data-close-drawer]').forEach((el) => el.addEventListener('click', () => openDrawer(false)));
$$('.drawer__toggle').forEach((btn) =>
btn.addEventListener('click', () => btn.setAttribute('aria-expanded', btn.getAttribute('aria-expanded') !== 'true'))
);
/* ---------- Mega menu: keyboard / touch toggle ---------- */
$$('.nav__item--mega > .nav__link').forEach((link) => {
link.addEventListener('click', (e) => {
if (window.matchMedia('(hover: none)').matches || e.detail === 0) {
const li = link.parentElement;
const open = !li.classList.contains('is-open');
if (open) { e.preventDefault(); }
li.classList.toggle('is-open', open);
link.setAttribute('aria-expanded', String(open));
}
});
});
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
$$('.nav__item--mega.is-open').forEach((li) => li.classList.remove('is-open'));
openDrawer(false);
openQuote(false);
hideSuggest();
}
});
/* ---------- Currency switch ---------- */
const fmtINR = new Intl.NumberFormat('en-IN', { maximumFractionDigits: 0 });
const fmtUSD = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
const setCurrency = (cur) => {
$$('.price[data-inr]').forEach((el) => {
const v = cur === 'usd' ? parseFloat(el.dataset.usd) : parseFloat(el.dataset.inr);
$('.price__cur', el).textContent = cur === 'usd' ? '$' : '₹';
$('.price__val', el).textContent = cur === 'usd' ? fmtUSD.format(v) : fmtINR.format(v);
});
$$('.cur__btn').forEach((b) => b.classList.toggle('is-active', b.dataset.cur === cur));
store.set('sgc_cur', cur);
};
$$('.cur__btn').forEach((b) => b.addEventListener('click', () => setCurrency(b.dataset.cur)));
setCurrency(store.get('sgc_cur', 'inr'));
/* ---------- Product tabs ---------- */
$$('.tab[data-filter]').forEach((tab) =>
tab.addEventListener('click', () => {
$$('.tab').forEach((t) => { t.classList.remove('is-active'); t.setAttribute('aria-selected', 'false'); });
tab.classList.add('is-active');
tab.setAttribute('aria-selected', 'true');
const f = tab.dataset.filter;
$$('.prod').forEach((p) => p.classList.toggle('is-hidden', f !== 'all' && p.dataset.group !== f));
})
);
/* ---------- Wishlist hearts (local only) ---------- */
const wish = new Set(store.get('sgc_wish', []));
$$('[data-wish]').forEach((btn) => {
const sku = btn.closest('.prod').dataset.sku;
btn.classList.toggle('is-on', wish.has(sku));
btn.addEventListener('click', () => {
wish.has(sku) ? wish.delete(sku) : wish.add(sku);
btn.classList.toggle('is-on', wish.has(sku));
store.set('sgc_wish', [...wish]);
});
});
/* ---------- Quote list ---------- */
const qdrawer = $('#quote-drawer');
const qItems = $('#quote-items');
const qEmpty = $('#quote-empty');
const qCount = $('#quote-count');
let quote = store.get('sgc_quote', []);
const openQuote = (open) => {
if (!qdrawer) return;
qdrawer.setAttribute('aria-hidden', open ? 'false' : 'true');
$('#quote-open')?.setAttribute('aria-expanded', String(open));
document.body.style.overflow = open ? 'hidden' : '';
};
const quoteText = () => quote.map((i) => `${i.name} (${i.sku}) × ${i.qty}`).join('\n');
const renderQuote = () => {
store.set('sgc_quote', quote);
const n = quote.reduce((a, i) => a + i.qty, 0);
qCount.hidden = n === 0;
qCount.textContent = n;
qEmpty.hidden = quote.length > 0;
qItems.innerHTML = quote.map((i, idx) => `
${esc(i.name)}
SKU ${esc(i.sku)}
−
+
`).join('');
const wa = $('#quote-to-wa');
if (wa) wa.href = cfg.whatsapp + encodeURIComponent('Hello SGC LABS! Please quote:\n' + quoteText());
};
const esc = (s) => String(s).replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
$$('[data-add-quote]').forEach((btn) =>
btn.addEventListener('click', () => {
const card = btn.closest('.prod');
const sku = card.dataset.sku;
const found = quote.find((i) => i.sku === sku);
found ? (found.qty += 1) : quote.push({ sku, name: card.dataset.name, qty: 1 });
renderQuote();
btn.textContent = 'Added ✓';
setTimeout(() => { btn.innerHTML = '
Add to quote'; }, 1200);
openQuote(true);
})
);
qItems?.addEventListener('click', (e) => {
const t = e.target.closest('button');
if (!t) return;
if (t.dataset.rm !== undefined) quote.splice(+t.dataset.rm, 1);
if (t.dataset.inc !== undefined) quote[+t.dataset.inc].qty += 1;
if (t.dataset.dec !== undefined) quote[+t.dataset.dec].qty = Math.max(1, quote[+t.dataset.dec].qty - 1);
renderQuote();
});
qItems?.addEventListener('change', (e) => {
if (e.target.dataset.qty !== undefined) { quote[+e.target.dataset.qty].qty = Math.max(1, parseInt(e.target.value, 10) || 1); renderQuote(); }
});
$('#quote-open')?.addEventListener('click', () => openQuote(true));
$$('[data-close-quote]').forEach((el) => el.addEventListener('click', () => openQuote(false)));
$('#quote-clear')?.addEventListener('click', () => { quote = []; renderQuote(); });
$('#quote-to-form')?.addEventListener('click', () => {
const ta = $('#items-field');
if (ta) {
const existing = ta.value.trim();
ta.value = (existing ? existing + '\n' : '') + quoteText();
}
openQuote(false);
document.getElementById('quote')?.scrollIntoView({ behavior: 'smooth' });
setTimeout(() => $('#enquiry-form input[name="name"]')?.focus(), 600);
});
renderQuote();
/* ---------- Search autosuggest ---------- */
const terms = cfg.searchTerms || [];
let activeSuggest = null;
const hideSuggest = () => $$('.search__suggest').forEach((ul) => { ul.hidden = true; ul.innerHTML = ''; });
$$('.search').forEach((form) => {
const input = $('.search__input', form);
const ul = $('.search__suggest', form);
let idx = -1;
const render = () => {
const q = input.value.trim().toLowerCase();
if (q.length < 2) { ul.hidden = true; return; }
const hits = terms.filter((t) => t.toLowerCase().includes(q)).slice(0, 8);
if (!hits.length) { ul.hidden = true; return; }
const re = new RegExp('(' + q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'ig');
ul.innerHTML = hits.map((h) => `
${esc(h).replace(re, '$1 ')} `).join('');
ul.hidden = false;
idx = -1;
activeSuggest = ul;
};
input.addEventListener('input', render);
input.addEventListener('focus', render);
input.addEventListener('keydown', (e) => {
const items = $$('li', ul);
if (ul.hidden || !items.length) return;
if (e.key === 'ArrowDown') { e.preventDefault(); idx = (idx + 1) % items.length; }
else if (e.key === 'ArrowUp') { e.preventDefault(); idx = (idx - 1 + items.length) % items.length; }
else if (e.key === 'Enter' && idx >= 0) { e.preventDefault(); input.value = items[idx].textContent; form.submit(); return; }
else return;
items.forEach((li, i) => li.setAttribute('aria-selected', String(i === idx)));
});
ul.addEventListener('mousedown', (e) => {
const li = e.target.closest('li');
if (li) { input.value = li.textContent; form.submit(); }
});
input.addEventListener('blur', () => setTimeout(() => { ul.hidden = true; }, 150));
});
/* ---------- Newsletter → redirect to contact page with email ---------- */
$('[data-newsletter]')?.addEventListener('submit', (e) => {
const email = $('#nl-email').value;
store.set('sgc_newsletter', email);
});
/* ---------- Enquiry form client validation ---------- */
$('#enquiry-form')?.addEventListener('submit', (e) => {
const f = e.target;
if (!f.checkValidity()) {
e.preventDefault();
f.reportValidity();
}
});
/* ---------- Cookie notice ---------- */
const cookie = $('#cookie');
if (cookie && !store.get('sgc_cookie')) cookie.hidden = false;
$$('[data-cookie]').forEach((b) => b.addEventListener('click', () => { store.set('sgc_cookie', b.dataset.cookie); cookie.hidden = true; }));
/* ---------- Reveal on scroll ---------- */
if ('IntersectionObserver' in window) {
const io = new IntersectionObserver((entries) => {
entries.forEach((en) => { if (en.isIntersecting) { en.target.classList.add('is-in'); io.unobserve(en.target); } });
}, { rootMargin: '0px 0px -8% 0px', threshold: 0.05 });
$$('.reveal').forEach((el) => io.observe(el));
} else {
$$('.reveal').forEach((el) => el.classList.add('is-in'));
}
})();
/* SGC LABS® homepage behaviour — vanilla JS, no dependencies */
(function () {
'use strict';
const $ = (s, c = document) => c.querySelector(s);
const $$ = (s, c = document) => Array.from(c.querySelectorAll(s));
const cfg = window.SGC || {};
const store = {
get(k, d) { try { return JSON.parse(localStorage.getItem(k)) ?? d; } catch { return d; } },
set(k, v) { try { localStorage.setItem(k, JSON.stringify(v)); } catch { /* private mode */ } },
};
/* ---------- Sticky header shadow ---------- */
const header = $('#header');
const onScroll = () => {
header.classList.toggle('is-stuck', window.scrollY > 8);
const top = $('#to-top');
if (top) top.hidden = window.scrollY < 600;
};
window.addEventListener('scroll', onScroll, { passive: true });
onScroll();
$('#to-top')?.addEventListener('click', () => window.scrollTo({ top: 0, behavior: 'smooth' }));
/* ---------- Mobile drawer ---------- */
const drawer = $('#drawer');
const burger = $('.burger');
const openDrawer = (open) => {
drawer.setAttribute('aria-hidden', open ? 'false' : 'true');
burger.setAttribute('aria-expanded', String(open));
document.body.style.overflow = open ? 'hidden' : '';
if (open) $('.drawer__close', drawer)?.focus();
};
burger?.addEventListener('click', () => openDrawer(true));
$$('[data-close-drawer]').forEach((el) => el.addEventListener('click', () => openDrawer(false)));
$$('.drawer__toggle').forEach((btn) =>
btn.addEventListener('click', () => btn.setAttribute('aria-expanded', btn.getAttribute('aria-expanded') !== 'true'))
);
/* ---------- Mega menu: keyboard / touch toggle ---------- */
$$('.nav__item--mega > .nav__link').forEach((link) => {
link.addEventListener('click', (e) => {
if (window.matchMedia('(hover: none)').matches || e.detail === 0) {
const li = link.parentElement;
const open = !li.classList.contains('is-open');
if (open) { e.preventDefault(); }
li.classList.toggle('is-open', open);
link.setAttribute('aria-expanded', String(open));
}
});
});
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
$$('.nav__item--mega.is-open').forEach((li) => li.classList.remove('is-open'));
openDrawer(false);
openQuote(false);
hideSuggest();
}
});
/* ---------- Currency switch ---------- */
const fmtINR = new Intl.NumberFormat('en-IN', { maximumFractionDigits: 0 });
const fmtUSD = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
const setCurrency = (cur) => {
$$('.price[data-inr]').forEach((el) => {
const v = cur === 'usd' ? parseFloat(el.dataset.usd) : parseFloat(el.dataset.inr);
$('.price__cur', el).textContent = cur === 'usd' ? '$' : '₹';
$('.price__val', el).textContent = cur === 'usd' ? fmtUSD.format(v) : fmtINR.format(v);
});
$$('.cur__btn').forEach((b) => b.classList.toggle('is-active', b.dataset.cur === cur));
store.set('sgc_cur', cur);
};
$$('.cur__btn').forEach((b) => b.addEventListener('click', () => setCurrency(b.dataset.cur)));
setCurrency(store.get('sgc_cur', 'inr'));
/* ---------- Product tabs ---------- */
$$('.tab[data-filter]').forEach((tab) =>
tab.addEventListener('click', () => {
$$('.tab').forEach((t) => { t.classList.remove('is-active'); t.setAttribute('aria-selected', 'false'); });
tab.classList.add('is-active');
tab.setAttribute('aria-selected', 'true');
const f = tab.dataset.filter;
$$('.prod').forEach((p) => p.classList.toggle('is-hidden', f !== 'all' && p.dataset.group !== f));
})
);
/* ---------- Wishlist hearts (local only) ---------- */
const wish = new Set(store.get('sgc_wish', []));
$$('[data-wish]').forEach((btn) => {
const sku = btn.closest('.prod').dataset.sku;
btn.classList.toggle('is-on', wish.has(sku));
btn.addEventListener('click', () => {
wish.has(sku) ? wish.delete(sku) : wish.add(sku);
btn.classList.toggle('is-on', wish.has(sku));
store.set('sgc_wish', [...wish]);
});
});
/* ---------- Quote list ---------- */
const qdrawer = $('#quote-drawer');
const qItems = $('#quote-items');
const qEmpty = $('#quote-empty');
const qCount = $('#quote-count');
let quote = store.get('sgc_quote', []);
const openQuote = (open) => {
if (!qdrawer) return;
qdrawer.setAttribute('aria-hidden', open ? 'false' : 'true');
$('#quote-open')?.setAttribute('aria-expanded', String(open));
document.body.style.overflow = open ? 'hidden' : '';
};
const quoteText = () => quote.map((i) => `${i.name} (${i.sku}) × ${i.qty}`).join('\n');
const renderQuote = () => {
store.set('sgc_quote', quote);
const n = quote.reduce((a, i) => a + i.qty, 0);
qCount.hidden = n === 0;
qCount.textContent = n;
qEmpty.hidden = quote.length > 0;
qItems.innerHTML = quote.map((i, idx) => `
${esc(i.name)}
SKU ${esc(i.sku)}
−
+
`).join('');
const wa = $('#quote-to-wa');
if (wa) wa.href = cfg.whatsapp + encodeURIComponent('Hello SGC LABS! Please quote:\n' + quoteText());
};
const esc = (s) => String(s).replace(/[&<>"']/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
$$('[data-add-quote]').forEach((btn) =>
btn.addEventListener('click', () => {
const card = btn.closest('.prod');
const sku = card.dataset.sku;
const found = quote.find((i) => i.sku === sku);
found ? (found.qty += 1) : quote.push({ sku, name: card.dataset.name, qty: 1 });
renderQuote();
btn.textContent = 'Added ✓';
setTimeout(() => { btn.innerHTML = '
Add to quote'; }, 1200);
openQuote(true);
})
);
qItems?.addEventListener('click', (e) => {
const t = e.target.closest('button');
if (!t) return;
if (t.dataset.rm !== undefined) quote.splice(+t.dataset.rm, 1);
if (t.dataset.inc !== undefined) quote[+t.dataset.inc].qty += 1;
if (t.dataset.dec !== undefined) quote[+t.dataset.dec].qty = Math.max(1, quote[+t.dataset.dec].qty - 1);
renderQuote();
});
qItems?.addEventListener('change', (e) => {
if (e.target.dataset.qty !== undefined) { quote[+e.target.dataset.qty].qty = Math.max(1, parseInt(e.target.value, 10) || 1); renderQuote(); }
});
$('#quote-open')?.addEventListener('click', () => openQuote(true));
$$('[data-close-quote]').forEach((el) => el.addEventListener('click', () => openQuote(false)));
$('#quote-clear')?.addEventListener('click', () => { quote = []; renderQuote(); });
$('#quote-to-form')?.addEventListener('click', () => {
const ta = $('#items-field');
if (ta) {
const existing = ta.value.trim();
ta.value = (existing ? existing + '\n' : '') + quoteText();
}
openQuote(false);
document.getElementById('quote')?.scrollIntoView({ behavior: 'smooth' });
setTimeout(() => $('#enquiry-form input[name="name"]')?.focus(), 600);
});
renderQuote();
/* ---------- Search autosuggest ---------- */
const terms = cfg.searchTerms || [];
let activeSuggest = null;
const hideSuggest = () => $$('.search__suggest').forEach((ul) => { ul.hidden = true; ul.innerHTML = ''; });
$$('.search').forEach((form) => {
const input = $('.search__input', form);
const ul = $('.search__suggest', form);
let idx = -1;
const render = () => {
const q = input.value.trim().toLowerCase();
if (q.length < 2) { ul.hidden = true; return; }
const hits = terms.filter((t) => t.toLowerCase().includes(q)).slice(0, 8);
if (!hits.length) { ul.hidden = true; return; }
const re = new RegExp('(' + q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'ig');
ul.innerHTML = hits.map((h) => `
${esc(h).replace(re, '$1 ')} `).join('');
ul.hidden = false;
idx = -1;
activeSuggest = ul;
};
input.addEventListener('input', render);
input.addEventListener('focus', render);
input.addEventListener('keydown', (e) => {
const items = $$('li', ul);
if (ul.hidden || !items.length) return;
if (e.key === 'ArrowDown') { e.preventDefault(); idx = (idx + 1) % items.length; }
else if (e.key === 'ArrowUp') { e.preventDefault(); idx = (idx - 1 + items.length) % items.length; }
else if (e.key === 'Enter' && idx >= 0) { e.preventDefault(); input.value = items[idx].textContent; form.submit(); return; }
else return;
items.forEach((li, i) => li.setAttribute('aria-selected', String(i === idx)));
});
ul.addEventListener('mousedown', (e) => {
const li = e.target.closest('li');
if (li) { input.value = li.textContent; form.submit(); }
});
input.addEventListener('blur', () => setTimeout(() => { ul.hidden = true; }, 150));
});
/* ---------- Newsletter → redirect to contact page with email ---------- */
$('[data-newsletter]')?.addEventListener('submit', (e) => {
const email = $('#nl-email').value;
store.set('sgc_newsletter', email);
});
/* ---------- Enquiry form client validation ---------- */
$('#enquiry-form')?.addEventListener('submit', (e) => {
const f = e.target;
if (!f.checkValidity()) {
e.preventDefault();
f.reportValidity();
}
});
/* ---------- Cookie notice ---------- */
const cookie = $('#cookie');
if (cookie && !store.get('sgc_cookie')) cookie.hidden = false;
$$('[data-cookie]').forEach((b) => b.addEventListener('click', () => { store.set('sgc_cookie', b.dataset.cookie); cookie.hidden = true; }));
/* ---------- Reveal on scroll ---------- */
if ('IntersectionObserver' in window) {
const io = new IntersectionObserver((entries) => {
entries.forEach((en) => { if (en.isIntersecting) { en.target.classList.add('is-in'); io.unobserve(en.target); } });
}, { rootMargin: '0px 0px -8% 0px', threshold: 0.05 });
$$('.reveal').forEach((el) => io.observe(el));
} else {
$$('.reveal').forEach((el) => el.classList.add('is-in'));
}
})();