A missing number is a number from 1 to 9 that never lands in someone's Lo Shu grid. A line is any three cells that run straight across, down or corner to corner, and the grid has 8 of them. Our API reads only two kinds of line: full ones, with a digit in all three cells, and empty ones, with none. A line that is only part filled stays out of the answer.
Each missing number, repeated number and read line comes back with a short reading. The readings describe leanings, such as what may take more effort, and never fixed events.
John Doe was born on Aug 15, 1990. His grid has no 2, 3, 4 or 7. The 1, the 6 and the 9 show up twice each. Two lines are full. One is the 8 1 6 row at the bottom, the practical line. The other is the 9 5 1 column in the middle, the willpower line. No line is empty, so the other 6 lines get no reading.
On screen, show the grid first. Under it, show the answer's one-line summary, then list the missing numbers, the repeats and the lines, each with its reading. End with the answer's not_claimed line. How the digits get into the grid has its own post: how the Lo Shu grid is built.
We measured every share in this post on the code behind our API. We checked each example with a real API call in October 2026.
What the API returns for John and Jane
POST /v1/profile needs a person's name and birth date. Its loshu block holds three lists that read the grid. Here they are for John Doe and for Jane Doe, born Mar 22, 1992:
Field | Each item holds | John Doe | Jane Doe |
|---|---|---|---|
|
| 2, 3, 4, 7 | 5, 6, 7, 8 |
|
| 1, 6, 9 (2 each) | 1 twice, 2 three times, 9 twice |
|
| Practical and willpower lines, both full | Mind line, full |
|
| 5 strong areas, 4 that take effort | 4 strong areas, 4 that take effort |
The order never changes. Missing and repeated numbers come smallest first. Lines come as the three rows, then the three columns, then the two diagonals. So the lists keep the same order from one answer to the next.
A count is not a second reading. In the repeated numbers list, Jane's 2 appears three times. Its reading is the same text any repeated 2 gets, and the 3 sits only in count. Put the count beside the number when the strength of a repeat matters to your users.
The summary sums up the lists. Its text gives the strong areas, then the areas that take effort, in two sentences. John's starts: "Comes easily to you: self-belief, caring for family, drive". The strong and effort lists hold the same areas, and each item says whether it comes from a number or a line.
The eight lines, and why John gets two
The square holds 8 lines: three across, three down and two corner to corner. The API gives each line a fixed id and a plain name. Here is every line in John's grid, with how many of its cells hold a digit:
Line |
|
| John's filled cells | In John's answer |
|---|---|---|---|---|
Top row: 4 9 2 |
| Mind line | 1 of 3 | No |
Middle row: 3 5 7 |
| Feelings line | 1 of 3 | No |
Bottom row: 8 1 6 |
| Practical line | 3 of 3 | Yes, full |
Left column: 4 3 8 |
| Planning line | 1 of 3 | No |
Middle column: 9 5 1 |
| Willpower line | 3 of 3 | Yes, full |
Right column: 2 7 6 |
| Action line | 1 of 3 | No |
Diagonal: 4 5 6 |
| Drive line | 2 of 3 | No |
Diagonal: 2 5 8 |
| Property line | 2 of 3 | No |
Part-filled lines get no reading. The API's rule counts a line with only 1 or 2 digits in it as neither full nor empty. It has no reading for that case, so the line stays out of planes. Your app can still draw all 8 lines as a picture, by counting filled cells in loshu.cells. Just do not attach words to a line the API left out.
Line names differ from guide to guide. The guides we read call some lines "arrows" and give them names unlike ours. One even lists 7 8 9 as a line. Those three cells do not form a straight line in the 4 9 2 square. So key your code on id and show name to users. With ?lang=hi, John's ids and numbers do not change, and the names come back in Hindi.
How often each number is missing in a Lo Shu grid
We ran the code behind the API on all 47,847 dates between Jan 1, 1900 and Dec 31, 2030. Our earlier Lo Shu post used the same range. Here is how often each of the missing numbers shows up, and how often each number repeats:
Number | Missing, all dates | Missing, born 1900 to 1999 | Missing, born 2000 to 2030 | Repeated, all dates |
|---|---|---|---|---|
1 | 4.7% | 0% | 20.0% | 66.9% |
2 | 26.5% | 34.7% | 0% | 37.9% |
3 | 52.8% | 51.9% | 55.7% | 12.8% |
4 | 55.3% | 53.9% | 59.9% | 9.4% |
5 | 56.5% | 55.0% | 61.3% | 9.0% |
6 | 56.7% | 55.2% | 61.6% | 9.0% |
7 | 56.5% | 55.0% | 61.4% | 9.1% |
8 | 56.5% | 55.0% | 61.4% | 9.1% |
9 | 14.6% | 0% | 61.8% | 35.6% |
The birth year sets which numbers can go missing. Every year from 1900 to 1999 puts a 1 and a 9 in the grid. So nobody born in those years can be missing 1 or 9. Every year from 2000 to 2030 puts a 2 in the grid, so 2 is never missing for those births. Test only with dates from the 1980s and 1990s, and you will never see the readings for a missing 1 or 9.

Most grids miss 3 to 5 numbers. On average, a grid misses 3.8 numbers. Four missing numbers is the most common result, on 35.7% of dates. Three, four or five missing numbers cover 85.0% of all dates.
Plan for both ends. Only 6 dates miss no number at all. One is Apr 26, 1973, and its missing list comes back empty. The most missing in one grid is 7, on 72 dates, such as Sep 9, 1999. That grid holds only 1s and 9s. So your list must look right with no items and with 7.
How often each line is full or empty
The same 47,847 dates, line by line:
Line | Full | Empty | Not read (1 or 2 cells filled) |
|---|---|---|---|
Mind line (4 9 2) | 24.8% | 0% | 75.2% |
Feelings line (3 5 7) | 6.6% | 13.8% | 79.6% |
Practical line (8 1 6) | 16.9% | 1.7% | 81.4% |
Planning line (4 3 8) | 6.4% | 13.2% | 80.4% |
Willpower line (9 5 1) | 36.4% | 1.4% | 62.2% |
Action line (2 7 6) | 11.7% | 6.9% | 81.5% |
Drive line (4 5 6) | 7.0% | 14.9% | 78.1% |
Property line (2 5 8) | 10.7% | 6.5% | 82.8% |
Most lines go unread. Each line is part-filled on 62.2% to 82.8% of dates. The willpower line is full most often, on 36.4% of dates. The mind line is never empty from 1900 to 2030, because every year in that range puts a 9 or a 2 into it.
The center cell sits in four lines. The 5 belongs to the feelings, willpower, drive and property lines. When 5 is missing, as on 56.5% of dates, none of those four lines can be full.
Some answers hold no line at all. On 4.9% of dates, no line is full or empty. For Feb 3, 1990, the planes list comes back empty. One line comes back on 33.2% of dates, and two lines on 45.3%. Only the 6 dates with no missing number get all 8 lines, all of them full.
Empty lines are common. 46.6% of dates hold one empty line or more. Jan 1, 1988, has three: the feelings, action and drive lines. Sep 9, 1999, has five.
What a missing-number reading says
Each missing number has one reading, and everyone who misses that number gets the same text. John and Jane both miss 7, so both get this answer from the API:
"7 is missing. Setbacks may feel hard to learn from. Looking back calmly on what went wrong helps."
Every missing-number reading has two parts. First comes a leaning, worded with "may". Then comes one small, everyday step. All nine readings follow this shape, and each runs 68 to 100 characters.
Line readings follow the same idea. A full line names a strength, with words like "tend to". An empty line names what may be harder, then gives a step, such as starting with the smallest task.
Longer and Hindi text is one setting away. Add detail=expanded, and John's reading for a missing 2 grows from 86 to 343 characters, in two paragraphs. Ask with lang=hi, and the text comes in Hindi. The numbers, ids and counts never change between versions.
Remedies for a missing number: what the API gives
The step inside the reading is the main fix. For John's missing 4, the reading suggests small daily habits. The answer adds one more line, number_tip. It notes that many people pick a mobile or vehicle number that holds their missing numbers, and it calls this "a popular belief, not a promise." For John, its digits are 2, 3, 4 and 7.
The remedies block comes from the mulank. The same answer has a remedies block, with a direction, a deity, a fast day, a gemstone and a mantra. Its from field says "mulank", the birth day number, not the grid. John's block comes from Venus, the planet of his mulank 6. Jane's comes from Rahu, the planet of her mulank 4. A missing number never changes it.
The guides we read go further. One pairs a missing 4 with colors, gemstones, a mantra and objects to keep in the house. Another says to bring the missing number's element, direction and colors into daily life, and promises more wealth from it. The API returns none of these.
If you add remedies, mark them as yours. Keep them apart from the API's reading, call them tradition, and promise no result. The gemstone in the remedies block has its own note. It says to have an astrologer look at the birth chart before wearing the stone. Show that note next to it.
How to show missing numbers and lines in an app
Grid first, lists second. Draw the grid from loshu.cells, then put the lists under it. A user sees the empty cells before reading about them.
Name the gap, not the person. Head the list "Numbers not in your grid" or "Missing numbers". Never tell users they lack a number or a trait. One guide we read heads its empty-line readings with the word "lack". The API's readings describe effort instead, and its about line frames the grid as what comes easily and what takes more work.
Show only the lines the API returns. Split planes by state into full lines and empty lines. Do not write your own reading for a part-filled line.
Write the empty states. The profile answer has no text for an empty list, so your app supplies it. 4.9% of grids have no line to show, and 6 dates have no missing number. Without your own line, those sections would be blank.
Key on codes, show the words. Use number, id and state in code. Show name and reading to users. With ?lang=hi, only the words change.
Show the basis line and the not_claimed line. The basis line says which digits went into the grid. A tool that uses the date's digits alone ends up with another missing list on 68.3% of dates, and other lines on 57.7%. We compare the other rules in why two numerology calculators give different numbers. End the screen with not_claimed, which tells users the numbers show tendencies, not fixed events.
See the lists for any birth date. The free Lo Shu grid calculator on our site makes a POST /v1/profile request, just like your app would. Try Feb 3, 1990, for a grid with no lines, and Sep 9, 1999, for seven missing numbers.

The code: four lists from one answer
Here is Jane Doe's request, and the reading part of her answer, with each reading cut to "…". If you have not made a call yet, start with our numerology API quickstart.
Jane Doe, born Mar 22, 1992
{
"name": "Jane Doe",
"birth_date": "1992-03-22"
}{
"loshu": {
"missing": [
{ "number": 5, "reading": "…" },
{ "number": 6, "reading": "…" },
{ "number": 7, "reading": "…" },
{ "number": 8, "reading": "…" }
],
"repeated": [
{ "number": 1, "count": 2, "reading": "…" },
{ "number": 2, "count": 3, "reading": "…" },
{ "number": 9, "count": 2, "reading": "…" }
],
"planes": [
{ "id": "mental", "numbers": [4, 9, 2], "state": "full", "name": "Mind line", "reading": "…" }
]
}
}This JavaScript function turns that block into the four lists under the grid. Each list keeps a line to show when it has no items. We ran it on all 8 answers saved for this post, and every list matched its answer.
// The lists under a Lo Shu grid, from the loshu part of a POST /v1/profile answer.
// Each list has a line to show when it is empty, so no part of the screen is blank.
export function loShuLists(loshu) {
const fullLines = loshu.planes.filter((line) => line.state === "full");
const emptyLines = loshu.planes.filter((line) => line.state === "empty");
return [
{
key: "missing",
items: loshu.missing.map((item) => ({ label: String(item.number), text: item.reading })),
whenNone: "Every number from 1 to 9 is in this grid.",
},
{
key: "repeated",
items: loshu.repeated.map((item) => ({ label: `${item.number} ×${item.count}`, text: item.reading })),
whenNone: "No number appears more than once.",
},
{
key: "full-lines",
items: fullLines.map(lineItem),
whenNone: "No line is full.",
},
{
key: "empty-lines",
items: emptyLines.map(lineItem),
whenNone: "No line is empty.",
},
];
}
// One line of the grid, such as "Willpower line (9 5 1)".
function lineItem(line) {
return { label: `${line.name} (${line.numbers.join(" ")})`, text: line.reading };
}For Jane, it gives four missing numbers, three repeats and one full line. Her empty-lines list shows "No line is empty." The whenNone lines are in English, so translate them for lang=hi yourself.
Send the request to https://apiforastrology.com/api/numerology/v1/profile. The call takes 3 reading credits, and the answer also holds Jane's mulank, bhagyank and name number.
Read about each line. The glossary entry on Lo Shu planes covers all eight lines and their names. The core numbers API page shows everything else in the answer.

The short version
A number with no digit is missing, and a line counts only when all of it, or none of it, is filled. The birth year limits the results: 1 and 9 never go missing for anyone born in the 1900s. Build for both ends of the range, from no missing number to seven, and from no line to all eight. Word each gap as effort, never as lack, and give a missing number only the step its reading already holds.



