Skip to content
tuyển dụng.app
General 4 Nov 2026 · 8 min read · Tuyển Dụng

What 16,134 Vietnamese job ads actually say

We read 16,134 open job ads from 4,872 employers. Only 29.5% state a salary, 6.5% set an age band, 1.8% require a gender, and 9.7% name appearance or height.

We read 16,134 open job ads from 4,872 employers, taken from the employers' own public careers pages. Then we counted what those ads actually say: whether they name a salary, set an age band, or require a gender or an appearance. This is the picture as it stands. No employer is named, no ad is quoted, and every number here can be recounted with one command in our repository.

What we count, and what we do not

The source is text the employer publishes itself: careers pages of retail, F&B and service chains, plus public job boards. Each ad's full text is stored privately and never served. We only count fixed patterns over that text: phrases that state a salary band, an age, a gender, or an appearance or height requirement.

An ad counts as "stating a salary" only when the salary field holds a number. An ad "carries a criterion" when its text mentions at least one of age, gender, or appearance. Because one ad can carry two or three at once, the component shares add up to more than the overall share. This is a count over text, not a survey of employers. If an ad writes "appearance preferred" we count it; if it writes "presentable" we do not. So every figure below is a floor, not a ceiling.

4,872 employers for 16,134 ads: 3.3 ads each

An easy number to skip, but it says a lot about the market's shape: 3.3 open ads per employer on average. That average hides two very different groups. Most small employers have a single ad, usually one role they need filled now. A small set of large chains runs dozens to hundreds of ads, because every new store is a separate hiring round. So when you search in retail and services, you are mostly reading the ads of a few dozen chains, not thousands of companies spread evenly.

What that means in practice, for both sides. For a job seeker, a large chain usually has many branches and many shift patterns, so it is worth following that chain's careers page rather than reading single ads. For a small employer, your ad competes with hundreds of similar ads from one chain, so stating the salary and describing the shifts is where you can win, because that is exactly where the chains tend to stay vague.

Only 29.5% of ads name a salary figure

Of 16,134 open ads, 4,758 (29.5%) carry a salary figure in the data field. That is almost unchanged from our 21 October count (30.8% of 13,433 ads), even though the corpus grew by roughly 2,700 ads. In other words, more ads do not by themselves make pay more transparent.

Within the salary group, 4,307 ads (90.5%) state both a low and a high figure, meaning a range. The rest give only one end, usually a maximum or a starting point. A range is more useful than a single number, because it tells the reader where the job can lead.

66.9% choose to write "negotiable"

10,801 ads (66.9%) mark pay as negotiable, and 575 (3.6%) say nothing about pay at all. This is the easiest fact to understand here: two in three ads invite an application without saying what the job pays. For someone weighing a move, that is one extra round of questions before they know whether the interview is worth the trip.

There is a reason for the habit. Many retail and service roles pay by shift, by sales, or by the hour, so one fixed number would be wrong. But "negotiable" does not require silence about structure: an ad can still state the regional base rate, the shift allowance, and the sales bonus. Such an ad stays flexible and still answers the reader's first question.

6.5% of ads set an age band

1,044 ads (6.5%) name an age band, for example 20 to 35, or "under 30". That is the second most common of the three criteria we count. It shows up most in sales, service and cleaning roles, where employers are thinking about the stamina of a standing shift.

What stands out is that the band is usually written as a hard requirement, while the work itself rarely depends on age. A 38-year-old can hold an eight-hour shift better than a 25-year-old. When an ad prints an age band, the reader cannot tell whether it is a legal requirement, a client requirement, or simply the habit of whoever wrote the ad.

1.8% require a gender, 9.7% name appearance or height

294 ads (1.8%) require one specific gender rather than "male or female". The usual form is a separate gender line inside the requirements. 1,568 ads (9.7%) name appearance or height, most often for reception, sales consulting and hostess roles. That group is larger than the age group and more than five times the gender group.

Together, 2,604 ads (16.1%), about one in six open ads, carry at least one criterion about age, gender or appearance. That is up from 13.8% in October, though most of the rise sits in the appearance group, and this run tightened how that group is matched.

Why is the appearance group larger than the age group? Partly because appearance and height are often written inside the job description, as a short line in the requirements list, so they surface in more sectors: sales, reception, service, consulting. Partly because this is a criterion the writer thinks is obvious, to the point of not needing an explanation. When a criterion is written down and nobody in the company argues about it, it is usually an old habit rather than a real requirement of the work.

What the law says, described narrowly

This piece is a data report, not legal advice. Described narrowly: the Labour Code 2019 (Law 45/2019/QH14) lists prohibited acts in Article 8, including discrimination in employment on a set of grounds. Gender and marital status are on that list. Age and appearance are not, though other instruments, or the employer's own policy, may still apply. So the useful question is not "is it banned" but "is this criterion genuinely necessary for the job". An answer you can write down, with a reason, protects both sides.

The limits of this survey

This is not a representative sample of the Vietnamese labour market. The sources lean towards retail, F&B and services, because those are the sectors whose public careers pages we can read. Ads posted in social groups, on paper at the shop door, or inside PDFs are outside this count. Each re-run moves the numbers, because ads open and close every day. The figures here are a snapshot of 4 November 2026.

We also do not infer motive. An ad with an age band may reuse an old company template, may follow a client's requirement, or may reflect a genuine belief that age decides capacity. The data says what the ad wrote. The "why" has to be asked of the employer, and that is a conversation, not a counting command.

One more limit matters when comparing two runs. Any corpus opens and closes on each chain's own schedule, so a few thousand ads can enter and leave between runs. A difference of a few tenths of a percent between two days is usually noise, not a trend. Read it as a trend only when the move is bigger than that noise, and when the counting rule has not changed. This run tightened the appearance group, so that group in particular cannot be compared directly with the October figure.

How we counted, if you want to check

  • Dataset: ads with an open status at the moment of the run, each belonging to one employer.
  • The count runs over the ad's text: title, description, requirements, and the stored source text.
  • Patterns are fixed expressions, not a language model, so the same data gives the same result.
  • The figures live in one constant in the post's seed script, so text and data cannot drift apart on a re-run.
  • No employer name, no ad identifier, and no quoted sentence leaves the database.

Frequently asked questions

Why do only 29.5% of ads state a salary?▼
Most roles in this group pay by shift, by hour or by sales, so one fixed number is easy to get wrong. Many employers write "negotiable" instead of stating the structure. Both are lawful, but the second gives the reader less to work with.
Is 16,134 the whole market?▼
No. It is the number of open ads in our corpus, which leans towards retail, F&B and services. Ads in social groups, on paper, and inside PDFs are not counted.
Can one ad be counted twice?▼
No, in two senses. Each ad belongs to one employer and one source identifier. An ad carrying both an age and an appearance criterion is counted once in the overall share, and once in each component share.
What does the appearance group contain?▼
Phrases naming appearance or height, such as a minimum height or a separate appearance line. Vague wording like "presentable" is not counted, so this group is a floor.
Is an age criterion unlawful?▼
This piece is not legal advice. Article 8 of the Labour Code 2019 lists the grounds on which discrimination is prohibited, including gender and marital status; age and appearance are not on that list. Other rules and internal policy may still apply. Ask a lawyer about a specific case.
When is this data updated?▼
This is a snapshot of 4 November 2026. On a re-run the open count and the shares move, because ads open and close daily. We will publish again when the numbers move enough to read as a trend, not every week.
May I reuse these figures?▼
Yes, with a link to this article and the date 4 November 2026, because the figures move on the next run. Do not quote a share without its denominator: 1.8% of 16,134 ads is 294 ads, and that sentence is true of this corpus only, not of the whole market.

Sources

  1. Cổng Văn bản Chính phủ: tra cứu Bộ luật Lao động 2019 (Luật 45/2019/QH14)
  2. Tổng cục Thống kê: số liệu lao động, việc làm
  3. Tuyển Dụng: quy chế hoạt động và cách chúng tôi xử lý dữ liệu tin tuyển dụng

Are you an employer?

Create a branded career page and post jobs free. Candidates contact you directly.

For employers