The results of the first Berlin Salary Trends survey are in. We collected 1,061 responses, significantly more than expected. Thanks to everyone contributing data and supporting my guerilla marketing one way or another! This was a lot of work, much more than I expected.

But, this is only the beginning.

GET REMINDED ABOUT THE NEXT SURVEY by submitting your e-mail

🙇🏻 Special thanks goes to: Akmal for his help with my Jupyter notebook and Navid for implementing the dashboard. For the explanation of the dashboard, jump here.

If you would like to make sure to participate in the next survey, you can leave your e-mail here or even better; you can subscribe to my Berlin and careers-related newsletter FOR FREE:

It’s almost impossible to produce all the relevant charts, so we created a dashboard; this way, you can explore most of the data yourself. I am excited to hear your feedback and suggestions for improvements. #berlinsalarytrends

Please remember that this is a hobby project. I hope it helps, and see you soon! 👋

Last report update: 24.7.2023 (added a TL;DR chapter)
next updates: adding Total comp charts, Code Interpreter test, add the median incomes per citizenship group

What’s inside

TL;DR: Average and median salaries in Berlin for selected roles

Average and median salaries in June 2023 in Berlin:

  • Solution Architects average salary €90,667 and median €93,000
  • Senior Software Engineers average salary €90,318 and median €88,000
  • Software Engineers average salary €75,400 and median €68,500
  • Senior Data Scientists average salary €95,800 and median €97,000
  • Data Scientists average salary €71,400 and median €62,500
  • Senior Data Engineer average salary €87,600 and median €84,000
  • Data Engineers average salary €65,900 and median €65,000
  • UX Designer average salary €63,926 and median €66,000
  • Agile Coaches average salary €78,700 and median €76,000
  • Data Analysts average salary €60,300 and median €60,000
  • Architects average salary €43,000 and median €48,000
  • Senior Product Managers average salary €95,200 and median €87,500
  • Product Managers average salary €74,700 and median €70,000
  • Project Managers average salary €66,777 and median €62,500

You can also filter the data by categories, for example:

  • Team Leads (managing small team) average salary €73,856 and median €72,000
  • Managers (manages team) average salary €84,773 and median €90,000
  • Women average salary €63,084 and median €57,500
  • Men average salary €77,506 and median €73,500

This data is from the dashboard. Try different roles and filters yourself.

General overview 

Out of 1,061 responses, I removed eight entries because the data looked extremely strange. We also had 83 entries of people who do not live or work remotely in Berlin; this leaves us with 970 valid entries. The survey was available in German (183 responses) and English (878). 

Most respondents (878) were based in Berlin, while 92 worked remotely for Berlin-based organisations.

Donut chart showing 90.5% of survey respondents are Berlin-based and 9.5% work remotely for Berlin organizations

Men were overrepresented; this has to do with the tech bias of my distribution channels, especially on tech-oriented subreddits. 

Donut chart of respondent gender: Male 70.1%, Female 28.2%, Non-Binary 0.9%, Prefer not to say 0.7%

Online someone correctly told me off with “harter Bias,” and yes, the bias is hard. That’s most apparent in the distribution across industries where Tech & Software was in a strong lead, followed by Information & Communication, Finance & Insurance, Retail & Wholesale and others. 

But still, better having skewed than no data?

Horizontal bar chart of industries: Technology/Software leads with 401 respondents, followed by Information and Communication at 86, Finance and Insurance at 77, and others below 76

Demographic details

In terms of age, more than 80% of respondents were between 25 and 39. This, again, is related to my guerilla marketing distribution channels. I wish we had higher numbers of more experienced people, but hey, we’ll be growing up together!

Bar chart of age groups: 30-34 is the largest at 36.2%, followed by 25-29 at 23.3% and 35-39 at 22.9%, with sharp drops after 40

Over 85% of respondents have completed higher education (Bachelor and upwards):

Donut chart showing 86.6% of respondents have higher education, 11.4% vocational education, and 2.1% not specified

Berlin is in Germany, but my newsletter is in English, and it shows. We only had 275 respondents with German passports (including dual combinations). 

Donut chart of citizenship: Non-EU 48.3%, German 23.5%, EU 23.1%, Dual 5.1%

Companies and Experience

Most respondents work in private firms; the rest (government, NGOs, public sector, freelancers etc.) totalled 11%. It is unclear how many respondents worked in startups: maybe a possible addition next year?

Donut chart showing 89% work at private firms and 11% at other organization types including government, NGOs, and public sector

Berlin is not a big industrial powerhouse: Over 60% of respondents were from smaller companies

Bar chart of company size: 1000+ employees leads at 37.8%, followed by 51-200 at 18.4%, 201-500 at 13.6%, 11-50 at 12.9%, 501-1000 at 11%, and 1-10 at 5.2%

Over 65% have been in their current company only for up to 2 years. “How many different companies have you worked for? may also make sense as a data point in the future.

Bar chart of tenure: 1-2 years is most common at 36.8%, under 1 year at 29.6%, 3-5 years at 23.5%, with steep decline after 6 years

Roles and experience

Cleaning roles and grouping roles is hard work. For example, a generous engineering filter will reach 376 predominantly Software Engineers. I also found 63 people trying to herd cats: Project and Product Managers. Compare this with ten Architects, eight Working and two PhD Students. We also had plenty of interesting outliers: Musicians, Artists, and Tour Guides. 

Let’s start with an easy one: total years of experience. Distribution correlates to age, and we did not have many newbies:

Bar chart of total experience: 6-10 years peaks at 34.8%, followed by 3-5 at 21.9% and 11-15 at 20.4%, forming a bell curve skewed toward mid-career

Fifteen freelancers were in the minority: most respondents worked full-time (93.0%):

Donut chart showing 93% full-time, 5.5% part-time, and 1.5% contract or freelance respondents

If we were an organisation, we would have too many managers or leaders for my taste: 25 managers for 73 employees.

Donut chart of role types: Individual Contributor 73.4%, Team Lead 13.4%, Manager 5.9%, Senior Manager/Director 3.2%, Prefer not to say 2.3%, Executive 1.8%

At last! Berlin salaries!

The average total annual gross salary among all valid respondents is €71,470, which is, hmmnot bad at all? The median is €70,000

A good third of respondents already received a raise in the last six months:

Donut chart of raises since January 2023: 61.2% received no raise, 21.5% got 1-5%, 9.4% got 6-10%, with smaller slices for higher raises

Only 25% of employees could count on a performance bonus. Almost 20% of the ones with bonuses also received an equity package

Two donut charts side by side: Bonus Payments shows 74.7% received no bonus and 25.3% did; Equity Compensation among bonus recipients shows 80.8% have no equity and 19.2% do

Equity sounds nice, but it comes with conditions of vesting and is, by some, considered “paper money”, so I decided to consider Total Annual Gross Salary (before tax and deductions) in the rest of the charts. 

Before you dig into the dashboard, check this histogram for orientation where you stand:

Histogram of total annual gross salaries in thousands showing a right-skewed bell curve peaking around 60-75k, with average at 71.44k and median at 70k, outliers above 200k removed

Total annual gross salary vs …

TL;DR: box charts are f**king amazing. 

We used box charts because they are great for showing the distribution of salaries across different groups. They use a quartile, a box and ‘whiskers’. The box represents 50% of the data (25th to 75th percentile), and the line inside indicates the median (a middle value separating the higher and lower half). Whiskers indicate minimum and maximum values within the calculated range. Data points outside the range are considered outliers. All charts have trimmed outliers (0.1/0.9) and a limit of 200k.

Data shows what everyone knew already—men get paid more. But I haven’t had time to do further analysis here: the next step would be to control for industry, age and experience.

Box plot of salary by gender: Male median around 75k with wide spread, Non-Binary median around 70k, Female median around 60k, showing a clear gender pay gap

Similarly, you don’t need to be Sherlock Holmes to understand that the longer you work, the more you’ll bring home. You can also see that the variability increases with time:

Box plot showing salary rising with experience: median climbs from around 50k at 1-2 years to around 90k at 21-30 years, with increasing variability at higher experience levels

You can expect to have your best years from 40 onwards: 

Box plot of salary by age group: median gradually increases from around 50k for under 24 to around 75k for 40-44, with widest spread in the 50-54 group

When we isolate higher education and simplify it extremely, a Bachelor’s seems the best business case if you want to optimise for money, providing the biggest pay for the least amount of studies. Could it be related to bachelors having more years of work experience than others who studied longer?

Box plot of salary by education for full-time workers with 5+ years experience: PhD median around 83k, Bachelor's around 75k, Diploma around 70k, Master's around 78k

How about your passport? The data was somewhat surprising: Non-EU countries lead with the highest median, while Germany had the greatest variability.

Chart 23: Median total Annual Gross Salary by Citizenship

And industries? The chart is crowded, but you will still clearly recognise the most paid industries: Finance/Insurance & Tech/Software, closely followed by Transportation & Storage and Information & Communication.

Box plot comparing salaries across 12 industries: Finance and Insurance and Tech/Software lead with medians around 75-80k, while Construction and Other Services trail below 60k

I already mentioned the pain of grouping roles, but here we go. I filtered the data as best as I could, and it is clear that a very distinct group of Solutions Architects were paid the best. I was positively surprised by the Product Managers: compared with the comparably much worse situation of Project Managers. Employers of Architects have it easy: a big passion means a big supply, which lowers their pay. Web Designers are victims of my filters because, surely, some are hiding in Frontend Engineers (grouped under Software Engineers). 

Box plot of salary by role: Solutions Architects lead with median around 95k, Product Managers around 90k, Software Engineers around 80k, down to Accountants around 35k

How about size? Bigger companies pay more. And this clearly shows when looking at the next chart: 

Box plot showing salary increases with company size: median rises from around 55k at companies with 1-10 employees to around 80k at 1000+ employees

And that was it from my side.

“Hey, what about…”

Yes! You’re right; plenty of other charts could also be interesting. You can also contribute because the cleaned data will be published in CSV format. It has been years since I studied statistics… and don’t even get me started on Python. 😅

At the time of this writing, I still plan to add a couple of charts based on reader feedback:

  • total compensation vs total annual gross compensation (box charts comparisons)

If you have another suggestion or plan to do additional analysis, please let me know: I would love to include it or link it to the Resources section.

Do you want to make sure to participate next year? Drop your e-mail here.

😎 How do you use this data?

It would be tempting to look at some numbers and go to your boss or HR and say, “See, THIS is what the benchmark is!” It’s more complicated than that, as this data does not account for performance and plenty of other factors.

So, use it as an orientation only, and please, when comparing yourself:

  • consider years of experience and age brackets (35 and 39 is a big difference),
  • take industry, years in the role and the actual role (team leads, managers etc.) into account,
  • note that I adapted some really specific roles as described in the appendix and that many roles aren’t really representative because of low number of submissions,
  • use common sense, and be kind to other people.

Thank you so much! ❤️

🧑🏻‍💻 Dashboard: explore the data yourself

The dashboard is built in Looker: I designed it and Navid implemented the logic; let’s see how it performs. Suggestions/tips are welcome. 

It seems simple enough:

  • whenever you type something in, press ENTER.
  • Percentile reacts to a Total Gross Annual salary number.
  • The average salary per 40h week takes shorter work weeks into account.

If the dashboard refuses to load, refresh or come back later, it sometimes needs time.

Did you like it? Share this report or ask a question on Twitter or LinkedIn with #berlinsalarytrends

👋 Thanks! I hope you enjoyed this report, and don’t forget to give feedback! Contact me here.

Resources & Media

Appendix: On bias, data cleaning and usage

In case of questions, please get in touch with me here. Please also check the GitHub chapter on license and using the survey data.


This was the first survey, hopefully of many. I wish we had a more diverse dataset, but it is what it is. On to a few comments.

  • Bias. I am unsure if avoiding it with an anonymous ONLINE survey is even possible. Many of the respondents were highly educated tech workers. In Berlin, according to the Office for Statistics Berlin-Brandenburg (🇩🇪), you are considered wealthy if your monthly net is at least €3,803. In 2022, nearly 9% of Berliners met this threshold. At €70k median, half of the respondents land only €300 under this threshold at Steuerklasse I.
  • Promotion. I promoted the survey everywhere I could, mostly through my Handpicked Berlin newsletter and on Twitter, Reddit, Facebook and Instagram (with a small amount of paid ads). I also asked for help everywhere I could.
  • Responses. The data is self-reported, and I live with the assumption that not many people take the time to go and lie in a survey. Some charts are without “na” or “prefer not to say” responses. I have also cleaned up typos and taken other measures to improve data quality. 

The survey was open for responses in June 2023.

Mandatory fields were:

  1. Are you currently employed in Berlin or by a Berlin-based organization?
  2. Gender
  3. Age
  4. Type of organisation
  5. Industry
  6. Job Position/Title
  7. Total annual gross salary in EUR (before taxes and deductions)

While promoting the newsletter, I received dramatic feedback about GDPR compliance and running it via Google Forms. Ok, so since it is anonymous, it isn’t in the scope of GDPR. Theoretically, it would be possible to single out a person, but if you look at the data, you will quickly realise it’s impossible because there are at least five or more people with similar characteristics living in Berlin. 

Still, I did my best to mitigate the risk of singling out:

  • I generalised job titles that were company-specific (e.g. Software Engineer III -> Software Engineer, Graduate → Junior, Principal -> Senior or Intern, Working Student -> Student). The data quality loss was insignificant because you can use compensation and years of experience as additional orientation.
  • I renamed most of the “Developers” to “Engineers”; I just needed to decide on something, engineers considering themselves developers, please do not feel offended.
  • I rounded the salaries up or down (eg. €33,750 rounded up and €42,370 rounded down).
  • Industries with less than five respondents were set to “prefer not to say”.
  • I removed self-declared nationalities (<10).
  • I removed the timestamp and reordered the entries randomly.
  • I amended annual gross salary submissions in cases when the submission was monthly instead of annually (<20).
  • I did several other data-cleaning measures, which are too boring to list.