The problem of space-efficient depth-first search (DFS) is reconsidered. A particularly simple and fast algorithm is presented that, on a directed or undirected input graph G = (V, E) with n vertices and m edges, carries out a DFS in O(n + m) timeA slightly more complicated variant of the algorithm works in the same time with at most n + (4/5)m + O(log n) bits. It is also shown that a DFS can be carried out in a graph with n vertices and m edges in O(n + m log * n) time with O(n) bits or in O(n + m) time with either O(n log log(4 + m/n)) bits or, for arbitrary integer k ≥ 1, O(n log (k) n) bits. These results among them subsume or improve most earlier results on space-efficient DFS. Some of the new time and space bounds are shown to extend to applications of DFS such as the computation of cut vertices, bridges, biconnected components and 2-edge-connected components in undirected graphs.