The items in the shopping cart do not participate in any recommendation rule. Add the participating items to your shopping cart to check the design.This product did not participated in any recommendation rule. Switch to another product to check the design.The items in this collection do not participate in any recommendation rule. Switch the participating items to check the design.The home page do not participate in any recommendation rule.
(This prompt would not display on client-side)
Crafted from FSC-Certified 100% Natural Wood: Each paper towel holder is handcrafted from solid FSC-certified wood, guaranteeing durability and a one-of-a-kind natural finish. Responsibly sourced, it adds an eco-friendly touch to your kitchen decor.
Premium Metal Rod with Towel Holder: Featuring a high-quality metal rod with a sturdy construction for long-lasting use. The smooth finish elegantly complements your overall countertop style.
Effortless One-Handed Tearing: The open vertical design allows for quick and easy one-handed tearing. Grab a paper towel effortlessly while keeping the roll securely in place.
Non-Slip Rubber Base Pad: Equipped with a non-slip rubber pad on the base, this holder stays firmly in place, protecting your kitchen counters from scratches and damage.
Comes Fully Assembled & Ready to Use: This paper towel holder arrives fully assembled, ready to use right out of the box. Simply unbox and enjoy—no tools or complicated setup required.
Fits Jumbo & Mega Rolls: Specifically designed to accommodate larger paper towel sizes, including jumbo and mega rolls, so you can go longer between replacements.
Premium Material
Made using premium FSC-certified solid wood and durable metal, this piece features sturdy construction and long-lasting durability.
Designed for Convenience
Curved open design allows for easy roll changes and one-hand tearing. Easily fits all standard rolls and holds them securely for a clean tear every time.
Non-Slip Rubber Base Pad
Equipped with a non-slip rubber pad on the base, this holder stays firmly in place, protecting your kitchen counters from scratches and damage.
You may also like
Recently viewed
${function(){
const settings_product_title = "title";
const product_grid_image_size = "150%";
const settings_product_image_hover_on = true;
let settings_product_save_label = true;
const settings_product_swatches_name = ["color"];
const settings_collection_color_swatches = true;
const variantShowLimit = 4;
const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6)
const product_variants = data.variants || [];
const product_id = data.id;
const images = data.images || [];
const image = data.image || {};
const imageWidth = image.width;
let imageHeight = image.height;
if (product_grid_image_size !== 'natural') {
imageHeight = (imageWidth * parseFloat(product_grid_image_size)) / 100;
}
const price = Number(data.price_min);
let compareAtPrice = Number(data.compare_at_price);
let offRatio = data.off_ratio;
const type = data.type;
const isMock = data.isMock;
let product_image_hover_on = false;
for (let i = 0; i < product_variants.length; i++) {
const item = product_variants[i];
const vcap = Number(item.compare_at_price);
if (item.price == price && vcap > compareAtPrice) {
compareAtPrice = vcap;
offRatio = item.off_ratio;
}
}
let second_image = null;
if (settings_product_image_hover_on) {
for (let i = 1; i < images.length; i++) {
const img = images[i];
if (img.src && img.src.indexOf('video=') === -1) {
second_image = img;
product_image_hover_on = true;
break;
}
}
}
let sold_label_on = false;
let sale_label_on = false;
if (settings_product_save_label == null) {
settings_product_save_label = true;
}
if (!data.available) {
sold_label_on = true;
}
if (settings_product_save_label && compareAtPrice > price && data.available) {
sale_label_on = true;
}
const diffPrice = compareAtPrice - price;
const variantValues = [];
const showVariants = [];
if (data.need_variant_image && settings_collection_color_swatches && settings_product_swatches_name.length > 0) {
for (let i = 0; i < (data.options || []).length; i++) {
const option = data.originData.options[i];
const optionName = option.name && option.name.toLowerCase();
if (settings_product_swatches_name.includes(optionName)) {
for (let j = 0; j < product_variants.length; j++) {
const variant = product_variants[j];
const value = variant.options[i].value;
if (!variantValues.includes(value)) {
variantValues.push(value);
showVariants.push(variant);
}
}
break;
}
}
}
return `