GDisk® Pile Cloth Disk Filter
Fully submerged, gravity-fed tertiary filter with polyester pile cloth media and automatic backwash, designed for high-efficiency suspended-solids removal in a compact footprint.
Tertiary filtration for discharge and reuse
GDisk® is a pile cloth disk filter that removes suspended solids and turbidity, and the BOD and COD attached to them, from secondary treated wastewater. It is used for final polishing in municipal and industrial STPs, for water reuse, and in drinking water treatment as a pre-filter for surface water.
The filter runs by gravity with the disks fully submerged, backwashes automatically, and loses only 1–3% of the water to backwash. GDisk® has been installed at more than 270 sites worldwide, including the UK, USA, UAE and South East Asia, with references from 250 KLD to 600 MLD, and is certified to California Title 22 for water reuse.

What GDisk® does in a treatment plant
Application
After biological treatment, treated wastewater can still contain fine suspended solids along with associated BOD, COD and phosphorus. GDisk® captures these particles on deep pile cloth media and is used for tertiary polishing where lower suspended-solids and turbidity levels are required. Performance depends on influent quality, loading and the selected configuration.
Because it needs a fraction of the area of sand filters, it also suits upgrades of existing plants and sites where space is tight.
How GDisk® works
Operation
Filtration. Water flows by gravity into the filter tank and through the pile cloth on both faces of each disk. Suspended solids are trapped in the pile. The filtered water passes into the inside of the disk, flows to the central tube and leaves the filter.
Backwash. As solids build up, the water level in the tank rises. When it reaches a set level, or at a set time interval, the backwash starts. Suction heads on both sides of each disk draw water back through the cloth at low pressure, lifting the trapped solids out while the disks turn slowly. Filtration continues during backwash, so there is no downtime.
Sludge discharge. Heavier solids that settle in the bottom of the tank are removed automatically.
Because the disks are fully submerged, the whole cloth area is used for filtration, and gravity flow keeps energy use low.
Where GDisk® is used
Application areas
Tertiary treatment in STPs
Polishing of secondary effluent to tighter discharge norms.
Water reuse
Filtration of treated water for irrigation, industrial and other non-potable reuse.
Industrial wastewater treatment
Final polishing of treated effluent.
Drinking water treatment
Pre-filtration of surface water to remove fine suspended solids, algae and organic matter before further treatment.
Power plant cooling water
Removes suspended solids from cooling water, protecting equipment.
Why choose GDisk®
Features & advantages
High-quality effluent
Typically 1–5 mg/L TSS, with 30–40% reduction in BOD and COD.
Very low energy
Gravity filtration and low-pressure backwash.
Minimal water loss
Only 1–3% of the flow used for backwash.
Continuous, automatic operation
Backwash triggered by level sensor or timer; filtration continues during backwash.
Compact
Much smaller footprint than conventional sand filtration.
Long-life media
Polyester pile cloth, typically lasting more than five years. Disks can be removed by undoing two bolts for a once-a-year pressure wash.
GDisk® models
Dimensions & manufacturing
Polyester pile cloth
Filter media
Typically 1–5 mg/L
Effluent TSS
Automatic, low-pressure suction; level or timer initiated
Backwash
1–3% of flow
Backwash water
California Title 22 (water reuse)
Certification
Frequently asked questions
FAQ
What is a pile cloth disk filter?
It is a filter made of vertical disks covered in a deep pile fabric. Water passes through the cloth from outside to inside, and solids are held in the pile. It does the same job as a sand filter in a much smaller space.
How does it compare with a sand filter?
A pile cloth disk filter needs much less area, uses gravity flow with a low-pressure backwash, loses only 1–3% of water to backwash, and has no filter media to top up or replace for years.
How often does the cloth need cleaning or replacing?
Backwash is automatic. We recommend removing the disks and pressure washing them with tap water about once a year. The cloth typically lasts more than five years.
Does filtration stop during backwash?
No. The filter keeps producing filtered water while the disks are backwashed.
What is California Title 22?
It is the California regulation that sets treatment and water quality requirements for reusing treated wastewater. Title 22 certification shows the filter meets those requirements for non-potable reuse.
How do I choose the right model?
From the design and peak flow, the suspended solids in the feed and the effluent quality needed. Our team will size the model and number of disks.
What is the delivery time?
Disk filter orders are typically manufactured within 8–10 weeks from manufacturing clearance.
Brochures, datasheets & media
Downloads
Documents
files
Photos
photos
Videos
videos
Explore more solutions
Related technologies
Filter Underdrainage System
The part of a sand filter you never see, and the part that decides whether it filters and backwashes evenly.
Submerged Ultrafiltration (SUF)
Membrane modules immersed directly in the tank, drawing water through the membrane under gentle suction for reuse-quality filtrate.
Need fine screening sized for your inlet works?
Send us your flow rate, channel dimensions and the fine-solids you need to capture — our engineers will recommend the right Stepflow configuration.
Call us
+91 70248-48383Email
[email protected]
Enquire about GDisk® Pile Cloth Disk Filter
Product enquiry
Tell us about your requirement and we’ll respond with specifications, references and pricing.
Request a quotation
Fields marked * are required. We typically respond within one business day.
(() => {
if (window.adroitEnquiryButtonsReady) return;
window.adroitEnquiryButtonsReady = true;
const rootSelector = ".adroit-contact-form";
const buttonSelector = [
"#wsf-1-field-38",
"#wsf-1-field-39",
].join(", ");
const values = {
"wsf-1-field-38": "Product Enquiry",
"wsf-1-field-39": "Service Request",
};
function getFormRoot(element) {
return element.closest(rootSelector);
}
function getHiddenField(form) {
let field = form.querySelector(
'input[data-enquiry-type-field="true"]'
);
if (!field) {
field = document.createElement("input");
field.type = "hidden";
field.name = "inquiry_type";
field.dataset.enquiryTypeField = "true";
form.appendChild(field);
}
return field;
}
function getErrorRow(formRoot) {
let errorRow = formRoot.querySelector(
'[data-enquiry-error-row="true"]'
);
if (errorRow) return errorRow;
const fieldsGrid = formRoot.querySelector(".wsf-fields");
const firstField = formRoot.querySelector(
"#wsf-1-field-wrapper-20"
);
if (!fieldsGrid || !firstField) return null;
errorRow = document.createElement("div");
errorRow.className =
"wsf-extra-small-12 wsf-tile wsf-field-wrapper";
errorRow.dataset.enquiryErrorRow = "true";
errorRow.hidden = true;
const errorMessage = document.createElement("div");
errorMessage.className = "wsf-invalid-feedback";
errorMessage.textContent = "This field is required.";
errorMessage.setAttribute("aria-live", "polite");
errorRow.appendChild(errorMessage);
fieldsGrid.insertBefore(errorRow, firstField);
return errorRow;
}
function showError(formRoot) {
const errorRow = getErrorRow(formRoot);
if (!errorRow) return;
errorRow.hidden = false;
const errorMessage = errorRow.querySelector(
".wsf-invalid-feedback"
);
if (errorMessage) {
errorMessage.style.display = "block";
}
formRoot.querySelectorAll(buttonSelector).forEach((button) => {
button.classList.add("is-invalid");
button.setAttribute("aria-invalid", "true");
});
}
function clearError(formRoot) {
const errorRow = formRoot.querySelector(
'[data-enquiry-error-row="true"]'
);
if (errorRow) {
errorRow.hidden = true;
}
formRoot.querySelectorAll(buttonSelector).forEach((button) => {
button.classList.remove("is-invalid");
button.removeAttribute("aria-invalid");
});
}
function hasSelection(formRoot) {
return Boolean(
formRoot.querySelector(
"#wsf-1-field-38.is-selected, #wsf-1-field-39.is-selected"
)
);
}
function validateEnquiry(formRoot) {
if (hasSelection(formRoot)) {
clearError(formRoot);
return true;
}
showError(formRoot);
return false;
}
function selectButton(button) {
const formRoot = getFormRoot(button);
const form = button.closest("form");
if (!formRoot || !form) return;
formRoot.querySelectorAll(buttonSelector).forEach((item) => {
const isSelected = item === button;
item.classList.toggle("is-selected", isSelected);
item.setAttribute("aria-pressed", String(isSelected));
});
getHiddenField(form).value = values[button.id] || "";
clearError(formRoot);
}
/*
* Window capture runs before WS Form's button click handler.
* This stops WS Form AJAX submission only when enquiry type is missing.
*/
window.addEventListener(
"click",
(event) => {
const enquiryButton = event.target.closest(
`${rootSelector} #wsf-1-field-38, ${rootSelector} #wsf-1-field-39`
);
if (enquiryButton) {
selectButton(enquiryButton);
return;
}
const submitButton = event.target.closest(
`${rootSelector} button[type="submit"], ${rootSelector} input[type="submit"]`
);
if (!submitButton) return;
const formRoot = getFormRoot(submitButton);
if (!formRoot) return;
if (validateEnquiry(formRoot)) return;
event.preventDefault();
event.stopImmediatePropagation();
},
true
);
/*
* Covers pressing Enter in a form field.
*/
window.addEventListener(
"submit",
(event) => {
const form = event.target;
if (!(form instanceof HTMLFormElement)) return;
const formRoot = getFormRoot(form);
if (!formRoot) return;
if (validateEnquiry(formRoot)) return;
event.preventDefault();
event.stopImmediatePropagation();
},
true
);
function initialize() {
document.querySelectorAll(rootSelector).forEach((formRoot) => {
const form = formRoot.querySelector("form");
formRoot.querySelectorAll(buttonSelector).forEach((button) => {
button.classList.remove("is-selected", "is-invalid");
button.removeAttribute("aria-invalid");
button.setAttribute("aria-pressed", "false");
});
clearError(formRoot);
if (form) {
getHiddenField(form).value = "";
}
});
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initialize, {
once: true,
});
} else {
initialize();
}
})();