Interpreting seismic data is expensive and laborious. Licensing fees, need for IT staff for application and database maintenance, a lengthy installation process are required to use commercially available seismic interpretation software.
Landmen, ranchers who own seismic data, geophysical consultants, and oil company and consultancy startups may lack the funds for commercial seismic interpretation software — excluded from the work by economics, not skill. The goal of this project is to give anyone with the skill to interpret seismic data the means to do so.
During my career I developed an interest in unique ways to visualise data, especially using 3D graphics tools. I became fascinated with 3D graphics working at PGS using its holoSeis – a 3D visualisation and model-building software package. If you are a geoscientist, being able to see how varying seismic imaging parameters affect a 3D view is truly stunning.
The purpose of this project was to see if I could develop a way to quickly understand the structural geology of large volumes of seismic data for users who do not want to spend a lot of money on licensing fees, don’t want to install a gigantic software package, and do not want to spend a huge amount of time on a steep learning curve.
The solution was to build a browser-based application which is presented here.
Introduction
Over a dozen years ago I discovered browser-based 3D graphics which used Threejs at threejs.org, which has an enormous number of examples – games, commercials, art, 3D object demos. I then started trying to display and manipulate data in 3D. I did not see any commercial use for it at that time because in order to view a Threejs HTML file a gigantic library of Threejs functions needed to be local. No one would want to download and install a graphics library containing hundreds of files.
My introduction to Three.js dates to around 2016-2017. At that time, using it required storing all its program libraries as local files on your computer. This made sharing a working web page nearly impossible — a recipient would need the identical folder structure with all the same files, which defeated the purpose of browser-based delivery. I set it aside for years as a result. No one would want to download and install a multi-gigabyte library just to view someone else’s webpage!
It was only a few years later, through a Stack Overflow search result that I discovered Content Delivery Networks — CDNs — which are publicly accessible web addresses where software libraries are permanently hosted. Specifically, cdnjs.cloudflare. com hosts Three.js and over 4000 other libraries. By including a single line in an HTML file referencing the library’s URL or the library’s host through an import statement within the JavaScript, any browser anywhere in the world can load it instantly without any local installation. This discovery was key to my motivation to stop tinkering and try to build something useful.
In an initial experiment with Threejs several years ago I was able to load a random point cloud of 30 million 3D points in only a few minutes on an old laptop. It loads in 2 seconds on my new HP i7 desktop. That really sparked my imagination.
Even then, specific CDN addresses sometimes stopped working as libraries were updated, requiring attention. This is why the code refers to a specific version — in our case Three.js version r128 — to ensure the app continues to work exactly as designed regardless of what newer versions are released.
The CDN service I used, cdnjs.cloudflare.com, is operated by Cloudflare — one of the world’s largest internet infrastructure companies, whose servers handle a significant fraction of all internet traffic. They host thousands of open-source software libraries as a free public service, guaranteeing fast, reliable delivery to any browser anywhere in the world. A single line in an HTML file is all that is needed to access Three.js from their servers — no download, no installation, no local files.
Working with Threejs and learning about how to control colour transparency – opacity – made me wonder if controlling opacity and point size would enable structural detail to be observed quickly within a 3D seismic data cube because it seemed reasonable that controlling opacity and point size would allow the analyst to see through many seismic inlines enabling views of the seismic reflection volume’s internal structure. It was a partial success as seen in the images above.
The opacity tool must be developed further by automating the adjustment of alpha with distance as the image is rotated. This will enable a complete 3D view of the internal structure, which is only hinted at the present level of development. There is also vertical banding which detracts from the horizon continuity.
Not being satisfied with these results I moved on to trying to display seismic sections in 3D much like the enterprise software packages used by geophysicists and geologists for mapping seismic reflections which enable scrolling using HTML controls as seen in the next image.
The image shown in Figure 3 proved that it was feasible to build a viewer in a browser to quickly examine gigabytes of seismic data. The input volume from which the inline shown here is 5 gigabytes.
The next step was building a 3D scroller with intuitive control.
The unique contribution here, other than enabling viewing data in a browser with many visualisation options, is a horizon autopicker which uses extrema (local maxima and local minima) exclusively for extending horizons. Where there is very good amplitude continuity – good signal-to-noise – within timeslices, picking horizons will build surfaces vertically. The autopicker here, unlike those in some commercial software, does not violate the data by jumping through poor signal-to-noise zones to continue a horizon. It stops.
The facility to quickly map 4-way closures is the most powerful feature of this entire project and cannot be overstated. The ability to quickly find geologic structural traps – drilling prospects – is the main goal of seismic interpretation.
It is now possible to do this in a browser without the need for powerful workstations, IT infrastructure and licensing fees. Using this tool, there will be no need to travel to an office to review or complete mapping. The browser tool can be used at farmouts, executive meetings, coffee shops or at remote locations wherever internet is available.
This is the most important contribution of the project.
Uploading and interpreting full 3D cubes is the long-term goal of this website, but current hosting costs limit available storage to 50 gigabytes — not enough to support multiple users’ 3D data at once. This constraint led directly to the 2D seismic viewer/interpreter: since a single 2D line is typically megabytes rather than gigabytes, many users can upload and interpret their own data simultaneously within the same storage budget. Once the demand for using the 3D facilities of the web page is sufficient, storage will be dramatically increased.
The 2D seismic data Interpretation facility of the web page
The following images show options available within the page shown in Figure 8.
Once our application has generated sufficient demand, we will add the ability to upload well data, built to meet each user’s security requirements.
Conclusions
A website enabling 2D and 3D seismic data viewing, containing interpretation tools enabling anyone with access to and understanding of seismic data to find geologic structures which might contain oil and gas reserves is presented here. The tools are available at here. They include a 3D seismic cube viewer which features controls to scroll slices, rapidly pick and save horizons and delineate structures in true 3D geographic coordinates. It currently works with a public domain data set and will feature user data uploading once a certain demand level is met.
The 2D application allows users to upload their 2D data securely and pick horizons automatically or manually and save their picks to a regular text file. The application loads data in a fence diagram where geographic coordinates are included within the SEGY trace headers. Where the geographic information is missing from the trace headers the data are loaded as parallel lines in 3D space.
These applications within a browser enable anyone with a basic understanding of seismic data interpretation and access to seismic data to find potential oil and gas traps.
Disclaimer
This project could not have been built without AI assistance writing code — but that assistance was directed entirely by me, and required constant initiative and quality-control testing of every function the application performs. AI has no initiative of its own, no imagination, and no independent sense of what makes an application genuinely useful to the people who will use it.
I began the seismic opacity and scroller studies in November 2025, 10 months ago. I mention this to show that software development using AI can be an arduous, frustrating and a lengthy process. It certainly was for me, but it will be well worth the effort if the application enables the discovery of only one hydrocarbon-bearing structure.
Appendix
The following file is the HTML file which produced the 30 million point cube display in Figure 1. It might help those interested in 3D graphics and JavaScript get started on a wonderful journey in learning how to display 3D data on a web page.
