Free shipping

BCOOSS Toilet Bowl Brush and Caddy Set 2 Pack - Bathroom Scrubber Cleaner Brush with Holder


BCOOSS Hard Bristles Toilet Bowl Brush with Holder 2 Pack

So easy to use and install, these toilet brushes are little gadgets that you will always in need in the bathroom. Ergonomic design of the handle , these toilet bowl brushes are anti slip and stainless steel which comfortable to hold and helps you clean with ease.

Package Include: 2 Toilet Brush; 2 Brush Holder; 2 Self Adhesive Sticker

Dry Quickly Ventilation System - BCOOSS toilet scrubber holder adopts a hollow suspension and concealed ventilation design, allowing to clean, dry and drain more quickly.

360° Deeply Cleaning - Perfect balance of stiffness and softness of this white toilet brush bristles for thorough and forceful cleaning even for hard to reach places.

Stick on the Wall - The toilet bowl brush supports wall Mounted or floor standing(Please wipe the surface to make wall dry and clean before apply the sticker.)

Hidden Tweezers - The hidden tweezer on the top of the handle toilet brush helps to clean and keep sanitary of your hands. It is very convenient for you to clean the hair and debri on toilet bowl, sink, bathtub and garbage bin.

  • 【2 Set Toilet Brushes with Holders】Toilet brush bristles are the core of any toilet brush. BCOOSS toilet bowl brush head is made from wear-resistant PP material that is sturdy, wear-resistant, corrosion-resistant and squish down enough to get into the nooks and under the rim. The durable  sturdy hard bristles can remove the toughest stains on the surface and corner seams while prevent from being scratched. The wide cleaning surface ensures contact with more areas in your toilet and enhances its dirt removing power.
  • 【Upgraded Ventilation Water Drawer Design】This new version of the toilet brush features a removable water drawer with a hollow suspension design, which helps drain water and dry quickly. You can also easily pull out the drip tray to remove excess water at anytime to prevent sewage from contaminating the floor. No more waiting for slow drying- keep the toilet brush neat and clean.
  • 【Choose How You Want to Install】Compare to regular toilet brush, we provide an additional way to store your toilet brush. No need for drilling on the wall, simply place the sticker on the wall, and slide the stand onto the sticker, which is a good idea for space saving. Or if you prefer, you can choose just place the toilet bowl brush on the ground.
  • 【Efficient Deep Cleaning Experience】Our toilet bowl brush set comes with a non-slip, ergonomic holder and is comfortable to hold. The hard bristles squish down enough to get into all the nooks and crannies, saving you effort while cleaning, and giving you a sparkling bathroom!
  • 【Worry-Free After Sales Service】This toilet scrubber brush matches most bathroom decor. And if the toilet bowl cleaner brush and holder doesn’t meet your expectations, please contact us for a solution.
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Most liked
Highest ratings
Lowest ratings
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); = 'block'; = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { = 'none'; }); fullScreenImage.src = ''; = 'none'; = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { = 'none'; }; fullScreenVideo.src = ''; = 'none'; = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.