Laravel performance optimization

Laravel performance optimization

Slow pages, admin screens that take forever, queries that eat the server, queues that fall behind, exports that time out. I find the causes and fix them, for companies with no developer of their own and for teams whose developers are stuck on it.

I'm all in on AI, and I stay careful about what goes live. Performance work is measuring first and fixing the biggest thing first, and I have done it on apps with hundreds of millions of records. Laravel and Vue are what I use most, and I'm based in Germany.

I usually reply within one working day.

Vincent Schmalbach

Where Laravel apps get slow

The usual causes, and what I do about them.

Database queries

N+1 queries from lazy-loaded relations, missing indexes, queries that load whole tables to count them. This is where most of the time goes, and it is also the cheapest thing to fix. Eager loading, the right indexes, and queries written for the job.

Work that should run in the background

Sending emails, generating PDFs, calling third-party APIs, building reports. None of that belongs in the request. Queues with Horizon, and a page that responds immediately.

Caching that actually helps

Redis for the things every request needs, cached query results for expensive screens, HTTP caching where it fits. Caching the wrong things makes bugs, so I cache on purpose, not everywhere.

Reports and exports that time out

Large exports and reports run as jobs, stream their output, or get pre-computed. Users get a download link instead of a spinning browser tab.

Search

When database LIKE queries are the bottleneck, a search engine is the fix. I have run Meilisearch over more than 200 million records with answers in under 50 milliseconds.

Servers, PHP and the web stack

PHP-FPM settings, OPcache, database configuration, a separate database server, Octane where it makes sense. The server is usually the last thing to change, not the first.

How I work

You don't need to have everything figured out before we talk. An idea, access to the repo, a screen recording or a list of problems is enough. I look at what is there, tell you what I would do and what it costs, and then I build it.

I use Claude Code, Codex and my own agent workflows for reading code, planning changes, writing tests, refactoring and debugging. It is not vibe coding. It is senior engineering with a much faster loop.

AI-first, and measured

Claude Code and Codex go through a codebase and its queries far faster than I could by hand, and they are good at spotting the N+1 patterns and the missing eager loads. I measure before and after every change, so you get numbers, not opinions.

I stay in control

AI writes a lot of my code. I still make every technical decision, read every change before it ships, and test it. Fast, but meticulous: the speed is only worth something if what goes live is right.

The way you want to work

Some clients want to look at every change before it goes live, others want me to deploy. Some want a weekly call, most prefer written updates. I work well asynchronously, and I still ask the important questions when they come up.

I think like an owner

I still run my own online products. So when I build or fix yours, I think about traffic, conversion, revenue and support as much as about the code, and I tell you when something is not worth building.

Examples of my work

Performance work from the last years.

Big data search platform

200 million records, answers in under 50 milliseconds

A search platform over more than 200 million records that had to answer instantly and tolerate typos. Built on Laravel and MeiliSearch with caching at several layers, running across multiple servers with a partner API on top.

Property advisers, on retainer

Slow website, main sales channel

An ongoing retainer for a company whose website is where their business comes from. The first job was performance: finding and fixing the bottlenecks, then a Laravel upgrade to the current version.

Learning platform

Performance work and heavy reporting

Performance work in a large Laravel learning platform, plus a custom reporting system with configurable columns and exports that run in the background instead of timing out in the browser.

What clients say

"He's tackled some major technical challenges for us, notably significantly improving our website's performance."

Howard Rickard, Athena Advisers Ltd

"He worked on performance optimization, customer-specific features, and a major custom reporting system."

Yash Chandra, Academy of Mine

"We especially value how quickly he gets into mature projects and finds solutions that fit the existing state of the codebase. Absolutely recommended."

Florian Brunner, designundzwanzig OG

Questions

How do you find out what is slow?

I measure before I change anything: logs, slow query analysis, Telescope or Debugbar on the slow pages, and the queue metrics. Then I fix the biggest problem first and measure again.

Do we need a bigger server?

Usually not. Most problems are in the queries, missing indexes, work that should run in the background, or things that should be cached. A bigger server comes last, if at all.

Can you make it fast without changing how the app works?

In most cases yes. Users should notice that it is faster and nothing else.

Is it the database or the code?

Usually the code asking the database for the wrong things. The fix is in the code, sometimes with an index on the database side.

Do you also handle scaling to more servers?

Yes. When one server is not enough anymore, I set up the queues, caching and databases to run across several. There is a separate page on scaling.

How do you charge?

Fixed price for a job with a clear outcome, a flat monthly rate for ongoing work, or hourly. Describe what you need and I'll suggest one.

Get a quote

What is slow, when it got slow, and roughly how much data and traffic the app has. A few sentences are enough. I'll reply with what I would look at first and what it would cost.

If you would rather talk first, book a 30-minute call.

I usually reply within one working day.