Imagine you shoot a laser beam into space, and there is a target placed every 500 million light years from you.

In a static universe, the laser beam will reach the first target in 500 million years, the second target after another 500 million years, and so on.

But what about in an expanding universe? Because of the expansion of space, the targets will move away from you. It will take more than 500 million years to reach the first target.

To calculate how long it would take the laser beam to reach each target, I wrote this little program.

(You can see this program run with a visual demonstration of the expansion of space here: https://mikehelland.github.io/hubbles-law/hubble_targets.htm)

EDIT: I was using the proper distance to calculate the motion of the targets. I've changed it to comoving distance (target.start) and updated the results.

    // the unit for distance is 1 million light years
    // the unit for time is 1 million years

    // light moves 1 million light years in 1 million years
    c = 1

    // Hubble's Constant
    // with this value the photon reaches a comoving distance of  
    // 13.8 billion light years after 46.5 billion years
    H = 0.000051

    // make the targets, 
    // place them 500 million light years apart
    // up to 20 billion light years away
    var targets = []
    for (var i = 500; i <= 20000; i += 500) {
            start: i,
            x: i

    // you are at 0, with your laser
    var photon_x = 0
    var t = 0
    var nextTarget = 0

    // only go for 50 billion years
    while (t < 50000) {

        // move the photon at a velocity of c
        photon_x = photon_x + c

        // move the targets at a velocity of its comoving distance * H
        for (var i = 0; i < targets.length; i++) {
            targets[i].x = targets[i].x + targets[i].start * H

        // if the photon has reached a target, log it, and wait for the next one
        if (targets[nextTarget].x <= photon_x) {
            console.log("Target " + targets[nextTarget].start + " reached at t = " + t)


And here are the results:

Target (billion light years)  Time to Reach (billion years)
0.5                           0.514
1                             1.054
1.5                           1.625
2                             2.228
2.5                           2.866
3                             3.542
3.5                           4.261
4                             5.026
4.5                           5.841
5                             6.712
5.5                           7.645
6                             8.646
6.5                           9.724
7                             10.887
7.5                           12.146
8                             13.514
8.5                           15.005
9                             16.636
9.5                           18.429
10                            20.409
10.5                          22.605
11                            25.057
11.5                          27.812
12                            30.928
12.5                          34.483
13                            38.576
13.5                          43.339
14                            48.952
14.5                          55.663
15                            63.83
15.5                          73.986
16                            86.957
16.5                          104.101
17                            127.82
17.5                          162.791
18                            219.513
18.5                          327.434
19                            612.904
19.5                          -

With the value of H used, the photon reaches a target of with a comoving distance of 13.8 billion light years after 46.5 billion years. The photon never reaches the target at 19.5 billion light years. It gets overtaken by the expansion of space.


  1. Are these the right predictions for how long it would take the laser to reach each target?
  2. Do we have measurements of z for galaxies at all these distances, and thus empirical evidence of how long it should take to reach each target?

I'm trying to understand the publicized "cosmological crisis" surrounding Hubble's Parameter.


I assume the predictions we have can't be made to match the measurements we have for a single value of H. Right?

  • $\begingroup$ How did you find your $H_0$? $\endgroup$
    – seVenVo1d
    Commented Nov 11, 2020 at 17:30
  • $\begingroup$ In general there are two Hubble constant measurement techniques, local and global.There is a tension between them and no one knows exactly why. In terms of your calculations you can take an average $H_0 \approx 70$. Or you can take the data from planck $H_0 \approx 67$ or from local measurements $H_0 \approx 74$. But in any case it does change much for the calculations $\endgroup$
    – seVenVo1d
    Commented Nov 11, 2020 at 17:33
  • $\begingroup$ @Layla I fiddled with it until the photon's maximum range (the last target it would hit) is 13.8 billion light years. $\endgroup$ Commented Nov 11, 2020 at 20:36
  • $\begingroup$ I dont think thats correct. That is not what $H_0$ means. Do you know about the density parameters and the proper distance comoving distance etc = $\endgroup$
    – seVenVo1d
    Commented Nov 11, 2020 at 20:37
  • $\begingroup$ Good point. I changed the code so it uses target.start * H (it's comoving distance) rather than target.x * H) (it's proper distance). Then I tuned it so the value H means a photon reaches a target that would start at 13.8 billion light years after 46.5 billion years. $\endgroup$ Commented Nov 12, 2020 at 5:38

1 Answer 1


The simulation is not correct. In your code, if targets[i].x * H > c then that target moves faster than the photon, i.e., outside of the light cone. In reality, all locations in the universe are equivalent and there is no location at which galaxies outrun light.

Another issue with the simulation is that $H$ is constant, which is accurate in the large-time limit of an eternally expanding universe, but isn't accurate in general, or in the real world in the present era.

The easiest way to do this simulation would be to use comoving coordinates, in which the target positions are fixed and the photon's speed is $c/a(t)$ instead of $c$. If $H=H_0$ is constant, then $a(t) = e^{(t-t_0)H_0}$. You can multiply the coordinates by $a(t)$ when displaying them. The light will appear to move faster and faster as it gets farther from the origin, and it will always move faster than a nearby galaxy, but it still will never reach galaxies that started out farther away than $c/H_0$.

If you want a more accurate simulation with non-constant Hubble parameter, you can use $$a(t) = \left( \frac{Ω_m}{Ω_Λ} \sinh^2 \left( \frac32 \sqrt{Ω_Λ} H_0 t \right) \right)^{1/3}$$ with $Ω_m/Ω_Λ\approx 0.447$ and $\frac32 \sqrt{Ω_Λ}\,H_0 \approx 1/(11.6\text{ Gyr})$, and a starting time of $13.8\text{ Gyr}$.

On your second question, there's no obvious connection between the redshift of light from distant objects (emitted in the distant past) and the time that it would take light emitted now to reach them in the future.

It's an open question why different methods of measuring $H_0$ produce incompatible results. I calculated the values above from parameters published by the Planck collaboration, found here.

  • $\begingroup$ Thanks. Regarding your first point, isn't that the case in Hubble's Law, v = HD, when HD >= c? Galaxies receding faster than c would be outside the lightcone, and that's Hubble's Limit: en.wikipedia.org/wiki/Hubble_volume $\endgroup$ Commented Nov 11, 2020 at 23:21
  • $\begingroup$ @MikeHelland I suggest it might make your question clearer if you would specify a location for an observer, and from that observer's location there are relative velocities of distant galaxies. It would also be helpful if you make clear a particular time WHEN a photon leaves the distance galaxy. At the present time (NOW) the light we on Earth see from a distant galaxy was emitted long ago when the galaxy was much closer to us. It is quite possible that that galaxy is NOW at a distance D such that HD>c, and any photons it emits NOW will never reach Earth. $\endgroup$
    – Buzz
    Commented Nov 14, 2020 at 16:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.