// Adds dimensions UUID, Author and Topic into GA4
Wednesday, June 17, 2026
29.4 C
Singapore

Should diners pay service charge when restaurants operate self-service? Netizens weigh in

SINGAPORE: A simple lunchtime visit has sparked an online debate over whether service charges are still justified when restaurants increasingly rely on self-service.

In a Reddit post that drew plenty of reactions, a diner shared how they overheard a neighbouring customer ask a waiter for an empty bowl. Instead of bringing one over, the waiter pointed to a self-service station and asked the diner to help themselves. While the poster said this felt similar to a kopitiam setup and was not an issue in itself, things changed after the meal.

When the bill arrived, the diner noticed a service charge had been added. This left them puzzled and, as they put it, “to a certain extent felt cheated,” especially since much of the service appeared to be self-directed. The diner then posed a question many could relate to: Does it still make sense to pay a service charge in such cases?

Netizens question what “service” really means

Many Reddit users echoed the frustration, pointing out that modern dining experiences often involve minimal staff interaction.

One commenter said, “A lot of restaurants no longer justify the service charge anymore. QR code menu, self-ordering and payment at the cashier — so far this is what I can think of.”

Another took a firmer stance, sharing, “One of my New Year’s resolutions is to stop patronising places which have a ‘service’ charge for nothing.”

Some responded with sarcasm. One quipped, “The service was the waiter pointing to the self-service station. You’re welcome.”

Others say it comes down to choice

Not everyone felt the issue was worth getting upset over. One netizen argued that the real question is value for money rather than definitions of service.

“Honestly, whether it’s justified or not is really a moot point. Do you think the overall price is worth it? Vote with your wallet, haha — to return or to stay away. Restaurants will always have their ways to try and get an extra buck from you,” the commenter said.

However, others felt more strongly that self-service should rule out such charges altogether. One Redditor wrote, “It’s not justified because the customer is getting the item himself. If establishments place that as ‘service charge’, it is akin to fraud.”

Where do diners draw the line?

The discussion reflects a broader shift in dining habits, as QR-code menus, self-order kiosks and collection counters become more common. While restaurants may argue that service charges go towards backend operations or staffing costs, diners inevitably expect that such charges reflect actual service received at the table, as that is what’s implied by the charge’s name.

For many netizens, the takeaway is clear: if the experience feels more like self-service, then being charged extra for “service” feels hard to swallow. In the end, diners may not agree on what is fair, but most seem to agree on one thing: the easiest way to respond is to spend their money elsewhere if the charges do not feel justified.


Read also: Malaysians question 10% service charge at restaurants using QR code self-service — Netizens react

- Advertisement -

Hot this week

Interbank withdrawals will no longer be charged RM1 (S$0.32) in Malaysia

Malaysian banks previously imposed a RM1 withdrawal fee (S$0.32) on customers withdrawing cash from another bank’s ATM. Starting July 1, the fee will be permanently removed, a move welcomed by many...

PSM and MUDA in Malaysia form a progressive bloc

PSM and MUDA has formed a progressive block in the wake of fresh state polls in Johor and Negeri Sembilan. The leaders say they did not decide on a name or logo for the block, but it is yet another...

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //
Enable Notifications OK No thanks